home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 17 / CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso / CUCD / Programming / DiceSource / doc / dice_commands.doc < prev    next >
Text File  |  1994-08-18  |  128KB  |  3,275 lines

  1.  
  2. dice/AME                                                            dice/AME
  3.  
  4.     FUNCTION
  5.     Advanced MicroEmacs text editor
  6.  
  7.     DESCRIPTION
  8.     AME is an advanced version of the MicroEmacs text editor.  See
  9.     chapter nine for details.
  10.  
  11.     SEE ALSO
  12.     dme
  13.  
  14. dice/bintohex                                                  dice/bintohex
  15.  
  16.     FUNCTION
  17.     Generate Motorola S-Records
  18.  
  19.     SYNOPSIS
  20.     bintohex inFile [-o outFile] -s[1,2,3] [-i] [-O offset]
  21.  
  22.     DESCRIPTION
  23.     Bintohex converts a binary file into Motorola S-Record or Intel  Hex
  24.     format files.  Hex format files are used by many brands of EPROM or
  25.     Flash EPROM programming devices, and are accepted by by most vendors
  26.     of mask ROM.
  27.  
  28.     inFile  Binary input file.
  29.  
  30.  -o outFile
  31.         Output file.  If no output file is specified, bintohex writes to
  32.         the console.
  33.  
  34.  -s[1,2,3]  Specify Motorola S-Record format.  Records are output in the
  35.         form:
  36.  
  37.         SXnn[addr]DD..DDcc
  38.  
  39.        SX     : X is the file type, S1, S2 or S3.
  40.        -------+-------------------------------------------------------
  41.        nn     : Number of bytes, not including the two nn characters.
  42.        -------+-------------------------------------------------------
  43.        [addr] : Address.  S1=4 bytes, 64K limit.
  44.        -------+-------------------------------------------------------
  45.           : S2=6 bytes, 16MB limit.
  46.        -------+-------------------------------------------------------
  47.           : S3=8 bytes, 4GB limit.
  48.        -------+-------------------------------------------------------
  49.        DD..DD : Data, in hexadecimal pairs.
  50.        -------+-------------------------------------------------------
  51.        cc     : Line checksum. 0xff minus the sum of bytes on line.
  52.        -------+-------------------------------------------------------
  53.  
  54.     -i  Specify Intel Hex format.  64K bytes maximum.  Records are
  55.         formatted:
  56.  
  57.         :xxaaaarrDD..DDcc
  58.  
  59.      xx   : Number of bytes on line.
  60.      -----+--------------------------------------------------------------
  61.      aaaa : Address. Intel files are limited to 64K bytes of addressing.
  62.      -----+--------------------------------------------------------------
  63.      rr   : Record type: 00=normal, 01=end.
  64.      -----+--------------------------------------------------------------
  65.      DD   : Data (xx bytes worth).
  66.      -----+--------------------------------------------------------------
  67.      cc   : Checksum: 0 minus the sum of bytes on line.
  68.      -----+--------------------------------------------------------------
  69.  
  70.  -O offset  Set initial address offset for hex file.
  71.  
  72. dice/cat                                                            dice/cat
  73.  
  74.     FUNCTION
  75.     Display file contents
  76.  
  77.     SYNOPSIS
  78.     cat [files...]
  79.  
  80.     DESCRIPTION
  81.     Like the AmigaDOS type command, cat displays one or more files on the
  82.     standard output.  Wildcards and multiple file names are accepted.
  83.  
  84. dice/ci                                                              dice/ci
  85.  
  86.     FUNCTION
  87.     Check in RCS Source
  88.  
  89.     SYNOPSIS
  90.     ci [ options ] file ...
  91.  
  92.     DESCRIPTION
  93.     Ci stores new revisions into RCS files.  Each file name ending in ,v
  94.     is taken to be an RCS file, all others are assumed to be working
  95.     files containing new revisions.  Ci deposits the contents of each
  96.     working file into the corresponding RCS file.  If only a working file
  97.     is given, ci tries to find the corresponding RCS file in the
  98.     directory RCS and then in the current directory.  For more details,
  99.     see the file naming section below.
  100.  
  101.     For ci to work, the caller's login must be on the access list, except
  102.     if the access list is empty or the caller is the superuser or the
  103.     owner of the file.  To append a new revision to an existing branch,
  104.     the tip revision on that branch must be locked by the caller.
  105.     Otherwise, only a new branch can be created.  This restriction is not
  106.     enforced for the owner of the file, unless locking is set to strict
  107.     (see rcs).  A lock held by someone else may be broken with the rcs
  108.     command.
  109.  
  110.     Normally, ci checks whether the revision to be deposited is different
  111.     from the preceding one.  If it is not different, ci either aborts the
  112.     deposit (if -q is given) or asks whether to abort (if -q is omitted).
  113.     A deposit can be forced with the -f option.
  114.  
  115.     For each revision deposited, ci prompts for a log message.  The log
  116.     message should summarize the change and must be terminated with a
  117.     line containing a single . or a CTRL-\.  If several files are checked
  118.     in, ci asks whether to reuse the previous log message.    If the
  119.     standard input is not a terminal, ci suppresses the prompt and uses
  120.     the same message for all files.  See also -m.
  121.  
  122.     The number of the deposited revision can be given by any of the
  123.     options -r, -f, -k, -l, -u, or -q.
  124.  
  125.     If the RCS file does not exist, ci creates it and deposits the
  126.     contents of the working file as the initial revision (default number:
  127.     1.1).  The access list is initialized to empty.  Instead of the log
  128.     message, ci requests descriptive text (see -t below).
  129.  
  130.    -r[rev]  assigns the revision number rev to the checked-in revision,
  131.         releases the corresponding lock, and deletes the working file.
  132.         This is the default.  Rev may be symbolic, numeric, or mixed.
  133.  
  134.         If rev is a revision number, it must be higher than the latest
  135.         one on the branch to which rev belongs, or must start a new
  136.         branch.
  137.  
  138.         If rev is a branch rather than a revision number, the new
  139.         revision is appended to that branch.  The level number is
  140.         obtained by incrementing the tip revision number of that branch.
  141.         If rev indicates a non-existing branch, that branch is created
  142.         with the initial revision numbered rev.1.
  143.  
  144.         If rev is omitted, ci tries to derive the new revision number
  145.         from the caller's last lock.  If the caller has locked the tip
  146.         revision of a branch, the new revision is appended to that
  147.         branch.  The new revision number is obtained by incrementing the
  148.         tip revision number.  If the caller locked a non-tip revision, a
  149.         new branch is started at that revision by incrementing the
  150.         highest branch number at that revision.  The default initial
  151.         branch and level numbers are 1.
  152.  
  153.         If rev is omitted and the caller has no lock, but he is the owner
  154.         of the file and locking is not set to strict, then the revision
  155.         is appended to the default branch (normally the trunk; see the -b
  156.         option of rcs).
  157.  
  158.         || NOTE: On the trunk, revisions can be appended to the end, but
  159.         || not inserted.
  160.  
  161.    -f[rev]  forces a deposit; the new revision is deposited even it is not
  162.         different from the preceding one.
  163.  
  164.    -k[rev]  searches the working file for keyword values to determine its
  165.         revision number, creation date, state, and author (see co), and
  166.         assigns these values to the deposited revision, rather than
  167.         computing them locally.  It also generates a default login
  168.         message noting the login of the caller and the actual checkin
  169.         date.  This option is useful for software distribution. A
  170.         revision that is sent to several sites should be checked in with
  171.         the -k option at these sites to preserve the original number,
  172.         date, author, and state.  The extracted keyword values and the
  173.         default log message may be overridden with the options -r, -d,
  174.         -s, -w, and -m.
  175.  
  176.    -l[rev]  works like -r, except it performs an additional co -l for the
  177.         deposited revision.  Thus, the deposited revision is immediately
  178.         checked out again and locked.  This is useful for saving a
  179.         revision although one wants to continue editing it after the
  180.         checkin.
  181.  
  182.    -u[rev]  works like -l, except that the deposited revision is not locked.
  183.         This is useful if one wants to process (e.g., compile) the
  184.         revision immediately after checkin.
  185.  
  186.    -q[rev]  quiet mode; diagnostic output is not printed.  A revision that is
  187.         not different from the preceding one is not deposited, unless -f
  188.         is given.
  189.  
  190.     -ddate  uses date for the checkin date and time.  Date may be specified
  191.         in free format as explained in co.    Useful for lying about the
  192.         checkin date, and for -k if no date is available.
  193.  
  194.      -mmsg  uses the string msg as the log message for all revisions checked
  195.         in.
  196.  
  197.     -nname  assigns the symbolic name name to the number of the checked-in
  198.         revision.  Ci prints an error message if name is already assigned
  199.         to another number.
  200.  
  201.     -Nname  same as -n, except that it overrides a previous assignment of
  202.         name.
  203.  
  204.    -sstate  sets the state of the checked-in revision to the identifier
  205.         state.  The default is Exp.
  206.  
  207.  -t[txtfile]
  208.         writes descriptive text into the RCS file (deletes the existing
  209.         text).  If txtfile is omitted, ci prompts the user for text
  210.         supplied from the standard input, terminated with a line
  211.         containing a single . or C\.  Otherwise, the descriptive text is
  212.         copied from the file txtfile.  During initialization, descriptive
  213.         text is requested even if -t is not given.    The prompt is
  214.         suppressed if standard input is not a terminal.
  215.  
  216.    -wlogin  uses login for the author field of the deposited revision.
  217.         Useful for lying about the author, and for -k if no author is
  218.         available.
  219.  
  220.     FILE NAMING
  221.     Pairs of RCS files and working files may be specified in 3 ways (see
  222.     also the example section of co).
  223.  
  224.     1) Both the RCS file and the working file are given.  The RCS file
  225.        name is of the form path1/workfile,v and the working file name is
  226.        of the form path2/workfile, where path1/ and path2/ are (possibly
  227.        different or empty) paths and workfile is a file name.
  228.  
  229.     2) Only the RCS file is given.    Then the working file is assumed to
  230.        be in the current directory and its name is derived from the name
  231.        of the RCS file by removing path1/ and the suffix ,v.
  232.  
  233.     3) Only the working file is given.  Then ci looks for an RCS file of
  234.        the form path2/RCS/workfile,v or path2/workfile,v (in this order).
  235.  
  236.     If the RCS file is specified without a path in 1) and 2), then co
  237.     looks for the RCS file first in the directory RCS, then in the
  238.     directory contained in the file RCS_LINK, followed by the current
  239.     directory.
  240.  
  241.     DIAGNOSTICS
  242.     For each revision, ci prints the RCS file, the working file, and the
  243.     number of both the deposited and the preceding revision.  The exit
  244.     status always refers to the last file checked in, and is 0 if the
  245.     operation was successful, 1 otherwise.
  246.  
  247.     SEE ALSO
  248.     co, ident, rcs, rcsdiff, rcsintro, rcsmerge, rlog, section 10.2.
  249.  
  250. dice/co                                                              dice/co
  251.  
  252.     FUNCTION
  253.     Check out RCS Source;
  254.  
  255.     SYNOPSIS
  256.     co [ options ] file ...
  257.  
  258.     DESCRIPTION
  259.     Co retrieves a revision from each RCS file and stores it into the
  260.     corresponding working file.  Each file name ending in ,v is taken to
  261.     be an RCS file; all other files are assumed to be working files.  If
  262.     only a working file is given, co tries to find the corresponding file
  263.     in the RCS directory and then in the current directory.  For more
  264.     details, see the file naming section below.
  265.  
  266.     Revisions of an RCS file may be checked out locked or unlocked.
  267.     Locking a revision prevents overlapping updates.  A revision checked
  268.     out for reading or processing (e.g., compiling) need not be locked.
  269.     A revision checked out for editing and later checkin must normally be
  270.     locked.  Co with locking fails if the revision to be checked out is
  271.     currently locked by another user.  (A lock may be broken with the rcs
  272.     command.)  Co with locking also requires the caller to be on the
  273.     access list of the RCS file, unless he is the owner of the file or
  274.     the superuser, or the access list is empty.  Co without locking is
  275.     not subject to accesslist restrictions, and is not affected by the
  276.     presence of locks.
  277.  
  278.     A revision is selected by options for revision or branch number,
  279.     checkin date/time, author, or state.  When the selection options are
  280.     applied in combination, co retrieves the latest revision that
  281.     satisfies all of them.    If none of the selection options is
  282.     specified, co retrieves the latest revision on the default branch
  283.     (normally the trunk, see the -b option of rcs).  A revision or branch
  284.     number may be attached to any of the options -f, -l, -p, -q, -r, or
  285.     -u. The options -d (date), -s (state), and -w (author) retrieve from
  286.     a single branch, the selected branch, which is either specified by
  287.     one of -f,..., -u, or the default branch.
  288.  
  289.     A co command applied to an RCS file with no revisions creates a
  290.     zero-length working file.  co always performs keyword substitution
  291.     (see below).
  292.  
  293.    -r[rev]  retrieves the latest revision whose number is less than or equal
  294.         to rev.     If rev indicates a branch rather than a revision,
  295.         the latest revision on that branch is retrieved.  If rev is
  296.         omitted, the latest revision on the default branch (see the -b
  297.         option of rcs) is retrieved. rev is composed of one or more
  298.         numeric or symbolic fields separated by ..    The numeric
  299.         equivalent of a symbolic field is specified with the -n option of
  300.         the commands ci and rcs.
  301.  
  302.    -l[rev]  same as -r, except that it also locks the retrieved revision for
  303.         the caller.  See option -r for handling of the revision number
  304.         rev.
  305.  
  306.    -u[rev]  same as -r, except that it unlocks the retrieved revision (if it
  307.         was locked by the caller).    If rev is omitted, -u retrieves the
  308.         latest revision locked by the caller; if no such lock exists, it
  309.         retrieves the latest revision on the default branch.
  310.  
  311.    -f[rev]  forces the overwriting of the working file; useful in connection
  312.         with -q.  See also the section on file modes below.
  313.  
  314.    -p[rev]  prints the retrieved revision on the standard output rather than
  315.         storing it in the working file.  This option is useful when co is
  316.         part of a pipe.
  317.  
  318.    -q[rev]  quiet mode; diagnostics are not printed.
  319.  
  320.     -ddate  retrieves the latest revision on the selected branch whose
  321.         checkin date/time is less than or equal to date.  The date and
  322.         time may be given in free format and are converted to local time.
  323.         Examples of formats for date:
  324.  
  325.         22-April-1982
  326.         17:20-CDT
  327.         2:25 AM
  328.         Dec.  29, 1983
  329.         Tue-PDT, 1981
  330.         4pm Jul 21 (free format)
  331.         Fri, April 16 15:52:25 EST 1982 (output of ctime).
  332.  
  333.         Most fields in the date and time may be defaulted.    co determines
  334.         the defaults in the order year, month, day, hour, minute, and
  335.         second (most to least significant).  At least one of these fields
  336.         must be provided.  For omitted fields that are of higher
  337.         significance than the highest provided field, the current values
  338.         are assumed.  For all other omitted fields, the lowest possible
  339.         values are assumed.  For example, the date "20, 10:30" defaults
  340.         to 10:30:00 of the 20th of the current month and current year.
  341.         The date/time must be quoted if it contains spaces.
  342.  
  343.    -sstate  retrieves the latest revision on the selected branch whose state
  344.         is set to state.
  345.  
  346.  -w[login]  retrieves the latest revision on the selected branch which was
  347.         checked in by the user with login name login.  If the argument
  348.         login is omitted, the caller's login is assumed.
  349.  
  350.  -jjoinlist
  351.         generates a new revision which is the join of the revisions on
  352.         joinlist. Joinlist is a comma-separated list of pairs of the form
  353.         rev2:rev3, where rev2 and rev3 are (symbolic or numeric) revision
  354.         numbers. For the initial such pair, rev1 denotes the revision
  355.         selected by the above options -r, ..., -w.    For all other pairs,
  356.         rev1 denotes the revision generated by the previous pair.  (Thus,
  357.         the output of one join becomes the input to the next.)
  358.  
  359.         For each pair, co joins revisions rev1 and rev3 with respect to
  360.         rev2.  This means that all changes that transform rev2 into rev1
  361.         are applied to a copy of rev3.  This is particularly useful if
  362.         rev1 and rev3 are the ends of two branches that have rev2 as a
  363.         common ancestor.  If rev1 < rev2 < rev3 on the same branch,
  364.         joining generates a new revision which is like rev3, but with all
  365.         changes that lead from rev1 to rev2 undone.  If changes from rev2
  366.         to rev1 overlap with changes from rev2 to rev3, co prints a
  367.         warning and includes the overlapping sections, delimited by the
  368.         lines
  369.  
  370.         <<<<<<<
  371.         rev1
  372.         =======
  373.         rev3
  374.         >>>>>>>
  375.  
  376.         For the initial pair, rev2 may be omitted.    The default is the
  377.         common ancestor.  If any of the arguments indicate branches, the
  378.         latest revisions on those branches are assumed.  The options -l
  379.         and -u lock or unlock rev1.
  380.  
  381.     KEYWORD SUBSTITUTION
  382.     Strings of the form $keyword$ and $keyword:...$ embedded in the text
  383.     are replaced with strings of the form $keyword: value $, where
  384.     keyword and value are pairs listed below.  Keywords may be embedded
  385.     in literal strings or comments to identify a revision.
  386.  
  387.     Initially, the user enters strings of the form $keyword$.  On
  388.     checkout, co replaces these strings with strings of the form
  389.     $keyword: value$. If a revision containing strings of the latter form
  390.     is checked back in, the value fields will be replaced during the next
  391.     checkout.  Thus, the keyword values are automatically updated on
  392.     checkout.
  393.  
  394.  Keyword    : Value
  395.  ===========+================================================================
  396.  $Author: dice $   : The login name of the user who checked in the revision.
  397.  -----------+----------------------------------------------------------------
  398.  $Date: 1994/08/18 05:37:09 $     : The date and time the revision was checked in.
  399.  -----------+----------------------------------------------------------------
  400.  $Header: /home/dice/com/doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:37:09 dice Exp dice $   : A standard header containing the full pathname of the RCS
  401.         : file, the revision number, the date, the author, the state,
  402.         : and  the locker (if locked).
  403.  -----------+----------------------------------------------------------------
  404.  $Id: dice_commands.doc,v 30.8 1994/08/18 05:37:09 dice Exp dice $        : Same as $Header: /home/dice/com/doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:37:09 dice Exp dice $, except more useful. Rather than the full
  405.         : path name as, this leaves just the file name.
  406.  -----------+----------------------------------------------------------------
  407.  $Locker: dice $   : The login name of the user who locked the revision (empty  if
  408.         : not locked).
  409.  -----------+----------------------------------------------------------------
  410.  $Log: dice_commands.doc,v $
  411. # Revision 30.8  1994/08/18  05:37:09  dice
  412. # .
  413. #
  414. # Revision 30.0  1994/06/10  17:54:40  dice
  415. # .
  416. #
  417. # Revision 30.0  1994/06/10  17:54:40  dice
  418. # .
  419. #        : The log message supplied during checkin, preceded by a header
  420.         : containing the RCS file name, the revision number, the author,
  421.         : and the date.  Existing log messages are NOT replaced.
  422.         : Instead,    the new log message is inserted after $Log: dice_commands.doc,v $
  423. # Revision 30.8  1994/08/18  05:37:09  dice
  424. # .
  425. #
  426. # Revision 30.0  1994/06/10  17:54:40  dice
  427. # .
  428. #
  429. # Revision 30.0  1994/06/10  17:54:40  dice
  430. # .
  431. #.  This
  432.         : is useful for  accumulating a complete change log in a source
  433.         : file.
  434.  -----------+----------------------------------------------------------------
  435.  $RCSfile: dice_commands.doc,v $  : The name of the RCS file without path.
  436.  -----------+----------------------------------------------------------------
  437.  $Revision: 30.8 $ : The revision number assigned to the revision.
  438.  -----------+----------------------------------------------------------------
  439.  $Source: /home/dice/com/doc/RCS/dice_commands.doc,v $   : The full pathname of the RCS file.
  440.  -----------+----------------------------------------------------------------
  441.  $State: Exp $    : State of the revision as set by the -s option of rcs  or ci.
  442.  -----------+----------------------------------------------------------------
  443.  
  444.     FILE NAMING
  445.     Pairs of RCS files and working files may be specified in 3 ways (see
  446.     also the example section).
  447.  
  448.     1) Both the RCS file and the working file are given.  The RCS file
  449.        name is of the form path1/workfile,v and the working file name is
  450.        of the form path2/workfile, where path1/ and path2/ are (possibly
  451.        different or empty) paths and workfile is a file name.
  452.  
  453.     2) Only the RCS file is given.    Then the working file is created in
  454.        the current directory and its name is derived from the name of the
  455.        RCS file by removing path1/ and the suffix ,v.
  456.  
  457.     3) Only the working file is given.  Then co looks for an RCS file of
  458.        the form path2/RCS/workfile,v or path2/workfile,v (in this order).
  459.  
  460.     If the RCS file is specified without a path in 1) and 2), then co
  461.     looks for the RCS file first in the directory RCS, then in the
  462.     directory contained in the file RCS_LINK, followed by the current
  463.     directory.
  464.  
  465.     EXAMPLES
  466.     Suppose the current directory contains a subdirectory RCS with an RCS
  467.     file io.c,v.  Then all of the following commands retrieve the latest
  468.     revision from RCS/io.c,v and store it into io.c.
  469.  
  470.     co io.c
  471.     co RCS/io.c,v
  472.     co io.c,v
  473.     co io.c RCS/io.c,v
  474.     co io.c io.c,v
  475.     co RCS/io.c,v io.c
  476.     co io.c,v io.c
  477.  
  478.     FILE MODES
  479.     If a file with the name of the working file exists already and has
  480.     write permission, co aborts the checkout if -q is given, or asks
  481.     whether to abort if -q is not given.  If the existing working file is
  482.     not writable or -f is given, the working file is deleted without
  483.     asking.
  484.  
  485.     DIAGNOSTICS
  486.     The RCS file name, the working file name, and the revision number
  487.     retrieved are written to the diagnostic output.  The exit status
  488.     always refers to the last file checked out, and is 0 if the operation
  489.     was successful, 1 otherwise.
  490.  
  491.     SEE ALSO
  492.     ci, ident, rcs, rcsdiff, rcsintro, rcsmerge, rlog, section 10.2.
  493.  
  494.     LIMITATIONS
  495.     The option -d gets confused in some circumstances, and accepts no
  496.     date before 1970.  There is no way to suppress the expansion of
  497.     keywords, except by writing them differently.
  498.  
  499.     BUGS
  500.     The option -j does not work for files that contain lines with a
  501.     single ..
  502.  
  503. dice/das                                                            dice/das
  504.  
  505.     FUNCTION
  506.     DICE Assembler
  507.  
  508.     SYNOPSIS
  509.     DAS asmfile [-o objectfile] [-E errorfile] [-nu]
  510.  
  511.     DESCRIPTION
  512.     Das is a minimal 68000 assembler designed to assemble the output of
  513.     dc1.
  514.  
  515.     || NOTE: Das should not be used for assembly projects, it is meant
  516.     || solely to deal with the output from the compiler.  Das supports
  517.     || only a minimal subset of features.
  518.  
  519.  -o objfile
  520.         Specify object file, else writes to asmfile.o.
  521.  
  522.  -E errorfile
  523.         Specify file for errors, else diagnostics are sent to stderr.
  524.  
  525.        -nu  Specify that HUNK_UNIT hunks have no name.    This option is used
  526.         for creating link libraries, to make the library smaller)
  527.  
  528.     SEE ALSO
  529.     Chapter Eight.
  530.  
  531. dice/dc1                                                            dice/dc1
  532.  
  533.     FUNCTION
  534.     DICE Compiler
  535.  
  536.     SYNOPSIS
  537.     DC1 cppd_src_file [-o outfile] options
  538.  
  539.     DESCRIPTION
  540.     DC1 is the compiler itself.  As input it requires a file preprocessed
  541.     by dcpp, and as output it provides assembly code ready for the das
  542.     assembler.  Normally one uses either dcc or VMake as a front end,
  543.     never directly invoking dc1.
  544.  
  545.     The compiler generates absolute-data references and absolute code
  546.     references by default.    Do not confuse this with DCC's default, which
  547.     is small-data and small-code.
  548.  
  549.     The compiler will put argument and auto variables into registers
  550.     according to register availability and usage.  It will use
  551.     A0-A1/D0-D1 for register variables whenever possible.  Consequently,
  552.     the most heavily used variables will be in registers even for very
  553.     large subroutines.
  554.  
  555.     You should get into the habit of declaring automatic variables within
  556.     sub blocks rather than declaring all your autos at the top of the
  557.     procedure. Apart from making the code more modular, this will enable
  558.     the compiler to make better decisions when allocating register
  559.     variables.
  560.  
  561.     DCC does not do any major contents tracking and redundant
  562.     instructions will be generated.  DAS will handle properly optimizing
  563.     branches and DAS has a peephole optimizer built in it to handle other
  564.     obvious redundancies. The compiler does some optimizations itself,
  565.     such as using bit instructions to handle special cases of &, |, and
  566.     ^, include using BTST.
  567.  
  568.     || NOTE: volatile forces a data item NOT to be placed in a register.
  569.     || register is treated as a hint only by the compiler.    const is
  570.     || ignored by default but will force objects into the code section
  571.     || given the -ms or -mS options (see below). Other type and storage
  572.     || qualifiers are described in chapter six.
  573.  
  574.     -S
  575. -S0  Set alternate section names "libdata" and "libbss".
  576.  
  577.   -Sd name  Set section name for data sections
  578.  
  579.   -Sb name  Set section name for bss sections
  580.  
  581.   -Sc name  Set section name for code sections
  582.  
  583.   -SD name  Set section name for __far data sections
  584.  
  585.   -SB name  Set section name for __far bss sections
  586.  
  587.         The -S option allows you to modify the default section naming
  588.         conventions.  DICE uses data, text, and bss as defaults for the
  589.         data, code, and bss sections.
  590.  
  591.         The DICE c.lib is compiled with -S and the startup code (c.o)
  592.         references these first to force c.lib's data to come before
  593.         program data.  The data ordering is then as follows:
  594.  
  595.     1) Library Initialized Data
  596.  
  597.     2) Program Initialized Data
  598.  
  599.     3) Library BSS Space
  600.  
  601.     4) Program BSS Space
  602.  
  603.     As long as the program does not declare more than 64KBytes of
  604.     initialized data it can be linked with the small-data model c.lib.
  605.     Thus, large-data-model programs that declare more than 64KBytes of
  606.     BSS space will still link with the small-data-model c.lib
  607.  
  608.     This may be of no consequence because any __far declared data will be
  609.     placed in a different data segment entirely.  Simply declare your
  610.     large arrays as __far and the rest may remain small-data
  611.  
  612.      -d[#]  Set debug mode.  This isn't pretty, it is primarily used for
  613.         diagnosing potential compiler problems.
  614.  
  615.    -E file  specify stderr file, any errors are appended to the file instead
  616.         of to stdout. Useful for batch compiles
  617.  
  618.     -R  Tells the compile to remove (delete) the input file when it no
  619.         longer needs it.  The input file is usually a temporary
  620.         preprocessor file and DCC will use this option to get DC1 to
  621.         delete it as soon as possible.
  622.  
  623.     -proto  The main compiler will generate errors for any unprototyped
  624.         function call.
  625.  
  626.     -r  Resident option.  The main compiler will generate special
  627.         autoinit code to initialize data-data relocations.    This
  628.         simplifies the work that DLink and the startup module must do to
  629.         support residentable programs.
  630.  
  631.     -v  Verbose
  632.  
  633.  -o outfile
  634.         Specify assembly output file name
  635.  
  636.        -mc  Small-code model (DCC default)
  637.  
  638.        -mC  Large-code model (DC1 default)
  639.  
  640.        -md  Small-data model (DCC default)
  641.  
  642.        -mD  Large-data model (DC1 default)
  643.  
  644.        -mw  Absolute-word addressing (overrides -md/-mD)
  645.  
  646.        -ma  Absolute addressing (no effect on DC1 operation)
  647.  
  648.         These options specify the memory model.  The small-code model
  649.         uses PC-relative addressing and the small-data model uses
  650.         A4-relative addressing
  651.  
  652.         -mw is used when making ROMable code and specifies that the
  653.         ABSOLUTE WORD addressing mode be used instead of either absolute
  654.         long or A4-relative.  Absolute word addresses are resolved at
  655.         link time.
  656.  
  657.         || NOTE: This option should not be used when generating
  658.         || executables meant to run on the Amiga.
  659.  
  660.       -ms0  (default) const is ignored
  661.  
  662.        -ms  string constants and const objs placed in code section
  663.  
  664.        -mS  string constants and const objs placed in code section
  665.  
  666.         These options control how const data items are handled, including
  667.         string constants such as char *ptr = "abcd"; The default is to
  668.         ignore the const type qualifier.
  669.  
  670.         If -ms is specified string constants and const data items are
  671.         placed in the code section.  Local references to const data items
  672.         use PC-RELATIVE addressing.  Remote references (from other
  673.         modules) to const data items use ABSOLUTE LONG addressing.
  674.  
  675.         -mS works the same as -ms but remote references are forced to use
  676.         PC-RELATIVE addressing.
  677.  
  678.         || NOTE: This can be dangerous and the final CODE size MUST BE
  679.         || LESS THAN 32KBYTES!
  680.  
  681.         Usually it is safe to use -ms and, in fact, can save a lot of
  682.         memory when combined with -r residentable programs because the
  683.         string constants will not be duplicated for each running instance
  684.         of the program.
  685.  
  686.     SEE ALSO
  687.     dcc, dcpp, dlink
  688.  
  689. dice/dcc                                                            dice/dcc
  690.  
  691.     FUNCTION
  692.     DICE Compiler Front End
  693.  
  694.     SYNOPSIS
  695.     dcc options file file ...
  696.  
  697.     DESCRIPTION
  698.     Dcc is the normal method of using the DICE system from a CLI window.
  699.     Dcc automatically invokes all the other parts of DICE, relieving you
  700.     of learning the grimy details.    Dcc is similar to the UNIX cc
  701.     command.  Many users will prefer to use VMake, the visual interface
  702.     to DICE. See chapter nine for full documentation.
  703.  
  704.     Dcc options may occur anywhere on the command line but MUST occur
  705.     singly. That is, -c -a instead of -ca.    file arguments to options may
  706.     occur with or without an intervening space.  -oFILE and -o FILE are
  707.     both legal.
  708.  
  709.     Files ending in .a or .asm are assumed to be assembly files.  Files
  710.     ending in .l or .lib are assumed to be library files.  Files ending
  711.     in .o or .obj are assumed to be object files.  All other files are
  712.     assumed to be C source files.
  713.  
  714.     Normally DCC compiles all C source files, assembles all asm files,
  715.     and links the resulting object files with any specified .o files
  716.     together to produce an executable.  The output file may optionally be
  717.     specified with the -o option.  If not specified, a default output
  718.     filename based on the name of the input file is generated.  This
  719.     general action is modified by two options:
  720.  
  721.     -c  DCC does NOT link, -o specifies the output object file
  722.  
  723.     -a  DCC does NOT assemble (i.e.  leaves the .a file resulting from a
  724.         compile).  -o specifies the output assembly file
  725.  
  726.         If neither option is given -o specifies the name of the resulting
  727.         executable.
  728.  
  729.         The default object directory is T: and may be changed with the -O
  730.         option.  The default temporary directory is also T: and may be
  731.         changed with the -T option.  IF YOU HAVE LIMITED MEMORY you may
  732.         have to specify that temporary files not be placed in T: either
  733.         by re-assigning T: or using the -T option.    DICE goes much slower
  734.         if temporary files must be written to a floppy or even a hard
  735.         disk.
  736.  
  737.         ## WARNING: asm files are assembled with DAS, See the assembler
  738.         ## reference if you intend to assemble non-DC1 generated assembly
  739.  
  740.       file  File to compile, assemble (.a), and/or link (.o, .lib)
  741.  
  742.     @@file  containing further list of files, one per line.  (blank lines and
  743.         lines beginning with ';' or '#' are ignored.  File may NOT
  744.         contain further options).
  745.  
  746.    -E file  specify stderr file, any errors are appended to file instead of
  747.         to stdout.    Useful for batch compiles
  748.  
  749.     -c  Compile C source files and assemble into OBJECT files only (do
  750.         not link).
  751.  
  752.     -a  Compile C source files into ASSEMBLY files (do not assemble or
  753.         link).
  754.  
  755.         Keep in mind the DAS will do further optimizations on the
  756.         assembly file that you see.
  757.  
  758.        -l0  Skip linking default libraries (dlib:c.lib dlib:amigas.lib
  759.         dlib:auto.lib), or standard startup (dlib:c.o and dlib:x.o).
  760.  
  761.         :: Beginner's Note: Do not use this option
  762.  
  763.         This option is used in special circumstances, such as when
  764.         generating .libraries or .devices.
  765.  
  766.         ## WARNING: DICE is much more dependent on its startup code (c.o
  767.         ## and x.o) than other compilers, do not link without the startup
  768.         ## unless you know what you are doing.
  769.  
  770.     -l lib  Include this library when linking.    (space is optional)
  771.  
  772.         :: Beginner's Note: Use -lm to link with the math library.  The
  773.         :: math library is required before functions such as printf will
  774.         :: work with floating point.
  775.  
  776.         See chapter  nine for more information on linking in custom
  777.         libraries.
  778.  
  779.  -3.0  -2.0  -1.3
  780.         Set the compiler to look for libraries and includes in the proper
  781.         place.  Libraries and includes are different for each operating
  782.         system release.  DICE eases compiling for, or using, different OS
  783.         versions.  DICE inserts the revision number into library names
  784.         ("amigas30.lib") and the include file path ("dinclude:amiga30/").
  785.  
  786.  -3.x  -2.x  -1.x
  787.         Like the above options, except x specifies a specific minor OS
  788.         revision.
  789.  
  790.        -L0  remove default library search path, including all explicitly
  791.         specified (-L dir) directories up to this point.
  792.  
  793.     -L dir  add the specified directory to the library search path.  If the
  794.         object module or library can not be found in the current
  795.         directory, directories specified with -L are searched.  -L
  796.         directories are searched before the default library directory
  797.         (DLIB:), assuming it was not removed with -L0 .
  798.  
  799.         Note that the directory path specified by -L is used to search
  800.         for libraries AND object modules.
  801.  
  802.         A trailing '/' is optional
  803.  
  804.        -I0  Remove default include path from search list.  The default
  805.         include path is dinclude: and dinclude:amiga/ (unless modified by
  806.         -1.x and -2.x options)
  807.  
  808.     -I dir  When compiling scan this include directory (space is optional)
  809.         The specified path takes precedence over defaults but defaults
  810.         are NOT removed.
  811.  
  812.  -D define[=value]
  813.         Pre-define a symbol
  814.  
  815.     -U  Undefine __STDC__, mc68000, _DCC, and AMIGA.
  816.  
  817.         :: Beginner's Note: Do not use any of these options
  818.  
  819.  -Houtfile=headerfile
  820.         This option enables precompiled header file generation and
  821.         operation. You may specify any number of -H options.  Example
  822.         usage:
  823.  
  824.         -Ht:defs.m=defs.h
  825.  
  826.         When DICE encounters an #include <defs.h> this will cause it to
  827.         first check for the existence of T:DEFS.M ...  if T:DEFS.M does
  828.         not exist DICE will generate it from <defs.h>.  if T:DEFS.M does
  829.         exist then DICE will use it directly and ignore <defs.h>
  830.  
  831.         You must specify the -H option both to have DICE create the
  832.         precompiled header file and to have DICE use the precompiled
  833.         header file.  Normally one makes operation as transparent as
  834.         possible so as not depend on the option existing when porting to
  835.         other environments.
  836.  
  837.         ## WARNING: A precompiled header file contains the preprocessed
  838.         ## header and preprocessor macros.    These are set in stone!
  839.  
  840.         If you modify a #define that would normally effect preprocessing
  841.         of a header file which is precompiled THE EFFECT WILL NOT OCCUR.
  842.         It is strongly suggested you use precompiled headers ONLY with
  843.         includes that are pretty much unchanging.  For example, the
  844.         commodore includes or otherwise have an appropriate dependency in
  845.         your DMakefile or make script to delete the precompiled header
  846.         file whenever any of your headers are modified.
  847.  
  848.         Normally one has a single -H option that enables precompiling of
  849.         a local header file, say defs.h, which contains #include's of all
  850.         other header files.  Source modules would then #include <defs.h>
  851.  
  852.         :: Beginner's Note: Do not use this option
  853.  
  854.    -o file  Specify output executable, object, or assembly file name
  855.         depending on what you are producing.  The space is optional
  856.  
  857.       -020  Generate code for the 68020 and later microprocessors
  858.  
  859.       -030  Generate code for the 68030 and later microprocessors
  860.  
  861.       -881  Generate inline FFP code for the 68881
  862.  
  863.       -882  Generate inline FFP code for the 68882
  864.  
  865.         :: Beginner's Note: Do not use any of these options
  866.  
  867.         These options exist to produce 020 and 030 opcodes, and 881/882
  868.         inline assembly for floating point operations.
  869.  
  870.        -md  small data model (default) uses A4-relative
  871.  
  872.        -mD  large data model uses absolute-long
  873.  
  874.        -mc  small code model (default) uses PC-relative
  875.  
  876.        -mC  large code model uses absolute-long
  877.  
  878.         :: Beginner's Note: Use only -mD if you declare more than
  879.         :: 64KBytes of data.
  880.  
  881.         These options specify the default data and code model to use.
  882.         The model may be overridden by use of the __near and __far type
  883.         qualifiers on a variable by variable basis.
  884.  
  885.         DICE defaults to the small data and small code model, and is able
  886.         to generate >32KBytes of code using the small code model so you
  887.         should never have to use -mC.  Note that the DICE libraries have
  888.         all been compiled with the small-data model, and certain
  889.         applications may disrupt the base register, A4...  in this case
  890.         use of the __geta4 type qualifier should be of use.  If worse
  891.         comes to worse you can recompile a large-data model c.lib, but I
  892.         suggest you try other solutions first.
  893.  
  894.       -ms0  (default), Only const objects are put into a CODE hunk
  895.  
  896.        -ms  String constants are put into the read-only code hunk
  897.  
  898.        -mS  String constants are put into the read-only code hunk AND all
  899.         external const references use NEAR addressing
  900.  
  901.         :: Beginner's Note: Use only -ms
  902.  
  903.         -ms0 turns off -ms/-mS in case you have it in your DCCOPTS
  904.         environment variable and want to turn it off.
  905.  
  906.         Default operation (no -ms or -mS) puts const items into a
  907.         read-only CODE hunk.  Locally declared objects are referenced
  908.         using PC-REL while external objects (declared in some other
  909.         module) are referenced using 32-BIT ABSOLUTE addressing.
  910.  
  911.         -ms will additionally make all string constants, such as "fubar",
  912.         const and referenced via PC-REL.  -ms is an extremely useful
  913.         option when you will never modify any of your string constants
  914.         because the strings are not copied for multiple running instances
  915.         of the program (if resident).
  916.  
  917.         -mS works like -ms, but in addition forces all external const
  918.         references to use PC-REL addressing INSTEAD of 32-bit absolute
  919.         addressing.
  920.  
  921.         || NOTE: This is a very dangerous option, do not use unless the
  922.         || final code size is less than 32 kbytes.
  923.  
  924.         Using -ms along with -r can result in huge savings of memory due
  925.         to the string constants being moved out of the data segment
  926.         (which must be duplicated for each running instance of the
  927.         program).
  928.  
  929.         ## WARNING: In all cases if you declare an object as const it
  930.         ## must be extern'd as const in other modules or incorrect code
  931.         ## will be generated.  This is true whether you use -ms/S or not.
  932.  
  933.       -mRR  registered arguments, strict
  934.  
  935.         This option controls the automatic registerization of procedure
  936.         arguments.    Only those prototyped procedures declaring 4 or fewer
  937.         arguments will be registered.  Values are passed in D0/D1/A0/A1
  938.         according to the type of variable and availability of registers.
  939.  
  940.         -mRR generates a single registerized entry point and extends
  941.         registerization to indirect function calls (that must be fully
  942.         prototyped).
  943.  
  944.         -mRR assigns either the registered or normal entry point to
  945.         function pointers depending on whether they are prototyped or not
  946.         (and any calls made through these function pointers will use the
  947.         registered args method).
  948.  
  949.         ## WARNING: -mR cannot be used if you make c.lib calls that take
  950.         ## call-back functions as arguments.
  951.  
  952.         -mr and -mRR CAN be used, however with -mRR you must be careful
  953.         to supply the registered entry point.
  954.  
  955.         ## WARNING: AMIGA.LIB routines that take call-back functions as
  956.         ## arguments must be given non-registered entry points.
  957.  
  958.         Thus if you use -mRR you MUST qualify the procedure or function
  959.         pointer type specification with __stkargs to entire it has a
  960.         normal entry point.
  961.  
  962.   -mw addr  Used for making romable executables, Do not use to create AMIGA
  963.         executables
  964.  
  965.         :: Beginner's Note: Do not use this option
  966.  
  967.         This option is another data model, called the ABSOLUTE-WORD data
  968.         model.  Source files compiled with this option generate
  969.         absolute-word data references to access data objects instead of
  970.         A4-relative or absolute-long.  The base of the data segment must
  971.         be specified as decimal, 0octal, or 0xHEX.
  972.  
  973.         Since absolute-word is used exclusive of A4-relative, the
  974.         compiler will now use A4 for register variables.  You may NOT mix
  975.         -mw modules with small-data models.
  976.  
  977.         The ROMABLE program is usually run on the executable generated by
  978.         DLink to generate a ROM.
  979.  
  980.   -ma addr  Used for making romable executables, do not use to create Amiga
  981.         executables
  982.  
  983.         :: Beginner's Note: Do not use this option
  984.  
  985.         This option specifies to the compiler and linker that the
  986.         resulting code is intended to be relocated to a permanent data
  987.         address, that specified by addr in decimal, 0octal, of 0xHEX.
  988.  
  989.         Unlike -mw, -ma assumes that the data segment can be placed
  990.         anywhere.  The ROMABLE program is usually run on the executable
  991.         generated by DLink to generate a ROM.
  992.  
  993.         You may still specify a data model, -md or -mD, to Be with this
  994.         option.  Unlike -mw, -ma does NOT touch the A4 register and thus
  995.         may be mixed with the small-data model.  See the section on
  996.         generating Romable code.
  997.  
  998.       -rom  Set up options for generating romable code
  999.  
  1000.         :: Beginner's Note: Do not use this option
  1001.  
  1002.         Like -l0, -rom disables automatic inclusion of a startup file
  1003.         (you must specify your own) and libraries.    However, x.o is still
  1004.         included to sink any autoinit code.  Your startup code must
  1005.         handle the appropriate model and call autoinit code before
  1006.         calling your program main
  1007.  
  1008.         This option is used to support ROMed firmware, i.e.  non-Amiga
  1009.         executables.  You should never link with c.lib.  Instead, a new
  1010.         library, rom.lib, is available.
  1011.  
  1012.         rom.lib contains no static or global references and thus works
  1013.         with any data model, and only completely self-contained routines
  1014.         are included.  The only data rom.lib uses is stack-based.  All
  1015.         rom.lib routines are completely reentrant, including [v]sprintf()
  1016.         !
  1017.  
  1018.     -proto  Prototype checking and optimizations
  1019.  
  1020.         When this option is used, an ERROR message will be generated for
  1021.         any call that is not prototyped.  This option is useful to ensure
  1022.         that you have properly prototyped routines (when you use
  1023.         prototypes), especially when floats and doubles are passed and
  1024.         indirect function pointers are used (they must be prototyped as
  1025.         well!).
  1026.  
  1027.         In the future this will enable stack-argument optimization.
  1028.         Currently, chars and shorts are extended to long's when pushed
  1029.         onto the stack for a subroutine call.  In the future if the
  1030.         -proto option is used these objects will be pushed as shorts and
  1031.         not extended.
  1032.  
  1033.      -prof  enable profiling for source modules
  1034.  
  1035.     -prof1  same as -prof
  1036.  
  1037.     -prof2  enable profiling for source modules and c*p.lib
  1038.  
  1039.     -prof3  enable profiling for source mods, c*p.lib, and amiga*p.lib
  1040.  
  1041.         Enable profiling.  You may compile some or all your source
  1042.         modules with profiling enabled.  Any -prof* option will enable
  1043.         profiling for compiled source modules.  -prof2 will cause DCC to
  1044.         link with a profiled c*p.lib while -prof3 will cause DCC to link
  1045.         with a profiled c*p.lib and amiga*p.lib (the ultimate).
  1046.  
  1047.         To profile c*.lib and/or amiga*.lib functions the equivalent
  1048.         c*p.lib and amiga*p.lib must exist.  These libraries are most
  1049.         likely lharc'd in DCC2:dlib/ or DCC3:dlib/ but if not, registered
  1050.         users may create any link library from the library source.
  1051.  
  1052.     -r  Make executable residentable with separate CODE & DATA hunks
  1053.  
  1054.        -pr  Make executable residentable w/ no relocation hunks
  1055.  
  1056.        -pi  Make executable NON-residentable w/ no relocation hunks
  1057.  
  1058.         :: Beginner's Note: Just use -r to get residentable executables
  1059.         :: and do not worry about these other options.
  1060.  
  1061.         -pr/-pi generate 'position independent' code also useful for
  1062.         ROMed applications.  NOTE that -pi and -pr force const items to
  1063.         be referenced pc-relative as well, causing -ms and -mS to do the
  1064.         same thing (when combined with -pr/-pi)
  1065.  
  1066.         Code size is limited to 32k bytes when you use -pr or -pi
  1067.  
  1068.         Refer to the RESIDENTABILITY section in Chapter 5 for a
  1069.         discussion of these options
  1070.  
  1071.         || NOTE: You may not make data references within const declared
  1072.         || objects when using the -r/-pr options.
  1073.  
  1074.         This is because the CODE hunk is shared between running instances
  1075.         of the program and these address references would be different
  1076.         between the instances.
  1077.  
  1078.         However, if you are using the -ms option, string constants will
  1079.         be in the code section and thus no problem.
  1080.  
  1081.  -O outdir  Specify directory that is to contain output executable, object,
  1082.         or assembly files (used when specifying multiple source files)
  1083.  
  1084.         -O is useful to tell the compiler where to put the objects when
  1085.         you use dcc to compile and link a whole bunch of files at once.
  1086.         In this case, the -o option can still be used to specify where to
  1087.         put the final executable.
  1088.  
  1089.         || NOTE: The -O name is used as a prefix so if you are specifying
  1090.         || a directory be sure it has a ':' or '/' on the end.
  1091.  
  1092.     -R  If the compile resulted in errors or warnings, execute the ARexx
  1093.         script specified in dcc:config/dcc.config.    This activates the
  1094.         integrated error tracking features of DICE.
  1095.  
  1096.  -T tmpdir  Specify the temporary directory used to hold preprocessed source
  1097.         files and temporary assembly files...  files that will be deleted
  1098.         after use.
  1099.  
  1100.         || NOTE: The -T name is used as a prefix so if you are specifying
  1101.         || a directory be sure it has a ':' or '/' on the end.
  1102.  
  1103.         The default is T:.    This option is useful in low-memory
  1104.         situations where you may decide to put intermediate files
  1105.         elsewhere.    Putting intermediate files on your hard disc or
  1106.         floppy slows down compilation by an order of magnitude, but if
  1107.         you are running on a system with little memory you may not have a
  1108.         choice.
  1109.  
  1110.     -s  Include symbolic debugging information in the executable (dlink
  1111.         option).
  1112.  
  1113.         This option includes the symbol table in the resulting executable
  1114.         and is passed to dlink.  When using DOBJ to disassemble an
  1115.         executable, DOBJ will use the symbol table to generate a more
  1116.         symbolic dump.
  1117.  
  1118.     -S  Alternate section naming op for libraries
  1119.  
  1120.         When making libraries: uses alternate section naming conventions
  1121.         so that all initialized data in the module will be placed before
  1122.         any initialized data in non -S modules (i.e.  normal linked
  1123.         object files).  Any library BSS will be placed before non-library
  1124.         BSS.  Thus, the final ordering in the final executable will be:
  1125.  
  1126.         LIBDATA
  1127.         PROGRAMDATA
  1128.         LIBBSS
  1129.         PROGRAMBSS
  1130.  
  1131.         Thus, if your program contains >64K Bytes of BSS you can still
  1132.         link with a library that tries to reference its own BSS using the
  1133.         small-data model.  If your library declares only initialized data
  1134.         (i.e.  int x = 0; ), then you can link with the library even if
  1135.         your program declares >64KBytes of *initialized* data !
  1136.  
  1137.     -v  Display commands as DCC executes them.
  1138.  
  1139.         -new Checks timestamps for source/destination and only
  1140.         compiles/assembles if object is outdated or does not exist.  Used
  1141.         to make DCC a standalone make.
  1142.  
  1143.     -f  Fast  CTRL-C handling for 1.3
  1144.  
  1145.         This option is used for 1.3 only.  You MUST be using the
  1146.         Commodore shell (NewShell) and if you make programs resident you
  1147.         MUST use the Commodore C:Resident command.
  1148.  
  1149.         This option will probably not work if you use WShell or ARPShell
  1150.         under 1.3.    This option allows DICE to take short cuts to run
  1151.         sub-programs and allows CTRL-C to be propagated to said programs.
  1152.         This option is useful to set permanently in your DCCOPTS ENV:
  1153.         variable if you run under 1.3.  DICE under 2.0 has no such
  1154.         problems and will run sub programs optimally, including
  1155.         propagation of ^C.
  1156.  
  1157.      -frag  FRAGment (linker option).
  1158.  
  1159.         Tell linker not to combine all code hunks together or combine all
  1160.         data hunks together.  Cannot be used if the -r or -mw options are
  1161.         used. Generally only useful if the large-data model is used.  Not
  1162.         entirely supported yet.
  1163.  
  1164.       -ffp  Set fp library for floats
  1165.  
  1166.         :: Beginner's Note: When using single precision floating point
  1167.         :: this option, use of the original ffp libraries, will make the
  1168.         :: program portable across all Amigas.
  1169.  
  1170.         Otherwise only amigas that have the Commodore
  1171.         MathIeeeSing*.library libraries will be able to run the program.
  1172.  
  1173.         If not specified, mathieeesingtrans.library and
  1174.         mathieeesingbas.library are used.  These are new 2.0 libraries
  1175.         that may not exist on all machines yet.
  1176.  
  1177.         If specified, mathtrans.library is used ..    Motorola's FFP float
  1178.         library.
  1179.  
  1180.         || NOTE: IF -ffp is used, be warned that conversion from floats
  1181.         || to doubles and back again is not entirely reliable.
  1182.  
  1183.        -d#  Set debugging level (# = a number), used for compiler diagnostics
  1184.         only.
  1185.  
  1186.    -d opts  Specify any combination of debugging options.  These options may
  1187.         be combined in one -d option.
  1188.  
  1189.         Currently no options are defined.
  1190.  
  1191.        -gs  Generate Dynamic Stack Code.  This generates code on every
  1192.         subroutine call to check available stack.  If available stack
  1193.         falls below 2K a new stack frame is allocated which will be
  1194.         deallocated when the subroutine returns.
  1195.  
  1196.         If the allocation fails, stack_abort() is called.  If this
  1197.         routine is not defined by you, the library stack_abort() will
  1198.         call abort().
  1199.  
  1200.         This option is extremely useful when compiling UNIX code that
  1201.         expects infinite stack.
  1202.  
  1203.      -chip  CHIP force (linker option).
  1204.  
  1205.         Tell linker to force all hunks into CHIP memory.  You should
  1206.         generally not use this option.  Instead, use the __chip keyword
  1207.         for those specific data items that need to be in CHIP memory.
  1208.  
  1209.         || NOTE: CHIP data items are accessed using the large-data model,
  1210.         || thus you cannot create residentable executables that contain
  1211.         || __chip declarations Unless they are also const objects --
  1212.         || read-only.
  1213.  
  1214.      -unix  Causes DICE to use DLIB:uc*.lib instead of DLIB:c*.lib ...    the
  1215.         uc*.lib is exactly the same as the normal c*.lib except that all
  1216.         filenames are assumed to be UNIX names ..  that is, a beginning
  1217.         slash is converted to ':' (root of the current volume), "./" is
  1218.         ignored, and "../" is converted to "/" for all file accesses.
  1219.  
  1220.         This makes porting and usage of UNIX programs easier.
  1221.  
  1222.     -aztec  The front end attempts to run Aztec executables
  1223.  
  1224.  -sas  -lattice
  1225.         Identical.    The front end attempts to run SAS/Lattice executables
  1226.  
  1227.         These options allow one to write a single DMakefile able to
  1228.         handle compilation under any compiler, assuming the source is
  1229.         compilable under any compiler.  These are very limited options
  1230.         and may not work across new versions of Aztec or SAS/C
  1231.  
  1232.        -//  This option enables C++ style // comments.    This form of
  1233.         commenting begins with a // causing it and the remainder of the
  1234.         line to be considered a comment.
  1235.  
  1236.    -no-env  This option disables DCCOPTS.  DCC will not process options in
  1237.         the DCCOPTS environment variable.
  1238.  
  1239.         The ENV:DCCOPTS environment variable may contain additional
  1240.         options.
  1241.  
  1242.         ENV:must exist for DCC to run, even if you do not have a DCCOPTS
  1243.         environment variable.  If you do not use ENV:,assign it to RAM:
  1244.  
  1245.         1> assign env: ram:
  1246.  
  1247.     EXAMPLES:
  1248.     Example #1.  Compile hello.c to create executable "hello.":
  1249.  
  1250.     1> dcc hello.c
  1251.     1> hello
  1252.  
  1253.     Example #2.  Compile hello.c to executable "fish" and put the object
  1254.     file in X:
  1255.  
  1256.     1> dcc hello.c -o ram:fish -TX:
  1257.  
  1258.     Example #3.  Compile hello.c to and object file  in RAM, then link
  1259.     with symbols:
  1260.  
  1261.     1> dcc -c hello.c -o ram:hello.o
  1262.     1> dcc ram:hello.o -o ram:hello -s
  1263.  
  1264.     Example #4.  Compile foo.c and link with an already compiled object
  1265.     file gar.o to produce an executable.  foo.o is placed in T:
  1266.  
  1267.     1> dcc foo.c gar.o -o ram:foogar
  1268.  
  1269.     SEE ALSO
  1270.     das, dc1, dcpp, dlink
  1271.  
  1272. dice/dcpp                                                          dice/dcpp
  1273.  
  1274.     FUNCTION
  1275.     DICE Preprocessor
  1276.  
  1277.     SYNOPSIS
  1278.     dcpp sourcefile [-o outfile] [-I includedir ...] options
  1279.  
  1280.     DESCRIPTION
  1281.     DCPP is a C preprocessor.  C code is first preprocessed, then
  1282.     compiled.  The preprocessing step resolves all # operators, like
  1283.     #define and #include, and generally prepares the C code for
  1284.     compilation.  Most programmers use dcc or VMake, and do not invoke
  1285.     dcpp directly.
  1286.  
  1287.     Dcpp automatically scans DINCLUDE:, DINCLUDE:PD/, and DINCLUDE:AMIGA/
  1288.     .  Any -I option directories are searched in sequence BEFORE dcpp's
  1289.     default search path. The last default directory, DINCLUDE:AMIGA/, may
  1290.     be modified with the -1.3, -2.0 and -3.0 options.
  1291.  
  1292.     Note that DINCLUDE:PD/    is meant to be a place to put public domain
  1293.     header files so as not to clutter the top level DINCLUDE: directory.
  1294.  
  1295.     As with all DCC commands, the space between the option and an
  1296.     associated file/dir argument is optional.
  1297.  
  1298.     The following symbols are defined by default
  1299.  
  1300.  Symbol        : Type           : Usage
  1301.  ==============+===============+============================================
  1302.  __LINE__      : integer       : Current line number.
  1303.            : constant      :
  1304.  --------------+---------------+--------------------------------------------
  1305.  __DATE__      : string        : Current date.
  1306.  --------------+---------------+--------------------------------------------
  1307.  __TIME__      : string        : Current time.
  1308.  --------------+---------------+--------------------------------------------
  1309.  __FILE__      : string        : Current file.
  1310.  --------------+---------------+--------------------------------------------
  1311.  __BASE_FILE__ : string        : Base source file.  Allows  an include file
  1312.            :           : to know which C file included it
  1313.  --------------+---------------+--------------------------------------------
  1314.  __STDC__      : boolean       : Indicates ANSI compiler.
  1315.  --------------+---------------+--------------------------------------------
  1316.  mc68000       : integer       : Indicates Motorola CPU.
  1317.            : constant      :
  1318.  --------------+---------------+--------------------------------------------
  1319.  _DCC           : integer       : Indicates the DICE system.
  1320.            : constant      :
  1321.  --------------+---------------+--------------------------------------------
  1322.  AMIGA           : integer       : Everyone's favorite computer.
  1323.            : constant      :
  1324.  --------------+---------------+--------------------------------------------
  1325.  _FFP_FLOAT    : boolean       : Set if single precision floats are in Fast
  1326.            :           : Floating  Point format
  1327.  --------------+---------------+--------------------------------------------
  1328.  _SP_FLOAT     : boolean       : Set if single precision floats are in
  1329.            :           : IEEE-SING  format (default).
  1330.  --------------+---------------+--------------------------------------------
  1331.  
  1332.  -1.x  -2.x  -3.x
  1333.         Selects operating system revision compatibility for the
  1334.         Preprocessor.  If not specified, DCPP searches dinclude:amiga for
  1335.         amiga includes.  If specified, DCPP searches dinclude:amigaNN for
  1336.         the includes.
  1337.  
  1338.         DCC supports this option and passes it along to dcpp.  This
  1339.         allows developers to compile under any OS revision with the flick
  1340.         of an option.  (Note: DCC also sets a different amiga.lib based
  1341.         on these options).
  1342.  
  1343.      -d[#]  This option turns on DCPP debugging
  1344.  
  1345.     -ofile  This option sets the output file, otherwise stdout is used.
  1346.  
  1347.       -ffp  Passed from DCC, tells preprocessor to define _FFP_FLOAT.  If not
  1348.         specified, preprocessor defines _SP_FLOAT.    This exists to better
  1349.         support alternate floating point models in header files.
  1350.  
  1351.  -Dvar[=val]
  1352.         This option predefines a symbol or macro.
  1353.  
  1354.    -E file  specify stderr file, any errors are appended to file instead of
  1355.         to stdout.    Useful for batch compiles
  1356.  
  1357.     -U  This option undefines the following symbols:
  1358.  
  1359.         __STDC__ mc68000 _DCC AMIGA
  1360.  
  1361.  -Hprecomp=header
  1362.         Enable use/creation of precompiled header files.  See chapter
  1363.         nine for more information.
  1364.  
  1365.         -Ht:defs.m=defs.h
  1366.  
  1367.        -I0  This option causes DCPP to *NOT* include any default directories
  1368.         in the include search list.
  1369.  
  1370.     -I dir  This option adds the specified directory to the include search
  1371.         list.  A hanging slash on the end of the path is not required.
  1372.         The space is optional.
  1373.  
  1374.        -//  Enable C++ style // comments.  The remainder of the line after //
  1375.         is encountered is interpreted as a comment.  This differs from /*
  1376.         style commenting in that no explicit comment-terminator is
  1377.         required.
  1378.  
  1379.     -notri  Disable tri-graph scan pass.  Note that the tri-graph pass is
  1380.         implemented in assembly and does not slow down preprocessing in
  1381.         any noticeable fashion, you should not disable tri-graphs unless
  1382.         you need to.
  1383.  
  1384.     SEE ALSO
  1385.     dcc, dc1
  1386.  
  1387. dice/dd                                                              dice/dd
  1388.  
  1389.     FUNCTION
  1390.     DICE debugger
  1391.  
  1392.     DESCRIPTION
  1393.     dd is a simple symbolic debugger.  dd allows you to single step and
  1394.     display much internal information about the operation of your code.
  1395.     Documentation for dd is in the dcc:doc directory of your DICE
  1396.     installation.
  1397.  
  1398. dice/DICEHelp                                                  dice/DICEHelp
  1399.  
  1400.     FUNCTION
  1401.     Fast Online Help Utility
  1402.  
  1403.     SYNOPSIS
  1404.     DICEHelp searchitem
  1405.  
  1406.     DESCRIPTION
  1407.     DICEHelp can quickly retrieve help on any DICE topic.  From a CLI,
  1408.     simply type your request as above.  From the Workbench, just click on
  1409.     the DICEHelp icon.
  1410.  
  1411.     Within many text editors, "hotkeys" have been established to link
  1412.     with DICEHelp.    A key will either search for information on the word
  1413.     under the cursor, or bring up a box for your selection.  DICEHelp
  1414.     uses a "fuzzy" search, so your never have to worry about getting the
  1415.     correct case or suffix.
  1416.  
  1417.     SEE ALSO
  1418.     Chapter Thirteen.
  1419.  
  1420. dice/diff,diff3                                              dice/diff,diff3
  1421.  
  1422.     FUNCTION
  1423.     File Compare Utilities
  1424.  
  1425.     SYNOPSIS
  1426.     diff options fileA fileB
  1427.  
  1428.     DESCRIPTION
  1429.     diff is used to compare the contents of two text files. Diff3
  1430.     compares three files.  Lines that are the same in all files are not
  1431.     printed.  Lines that are different are shown with arrows.  Note that
  1432.     the arrow "points" at the file from which the line came:
  1433.  
  1434.     < Lines found in fileA, but not in fileB.
  1435.     > Lines found in fileB, but not in fileA.
  1436.  
  1437. dice/dlink                                                        dice/dlink
  1438.  
  1439.     FUNCTION
  1440.     DICE Linker
  1441.  
  1442.     SYNOPSIS
  1443.     dlink options files libraries
  1444.  
  1445.     DESCRIPTION
  1446.     The final step in creating an Amiga program is linking.  Normally the
  1447.     linker is invoked as needed by dcc or VMake.
  1448.  
  1449.     Options may occur anywhere on the command lines.  Any file ending in
  1450.     .o or .obj is assumed to be an object file.  Any file ending in .l or
  1451.     .lib is assumed to be a library.  Any file name beginning with @@
  1452.     specifies a text file containing a further list of files.
  1453.  
  1454.     File ordering is maintained.  Section ordering is maintained.  All
  1455.     sections of the same name are coagulated together with ordering
  1456.     maintained.
  1457.  
  1458.     || NOTE: Inter-section ordering is not maintained within a library
  1459.     || since library modules are random included.  However, ordering is
  1460.     || maintained *between* libraries.
  1461.  
  1462.     All object files specified are included in the final executable.  All
  1463.     libraries specified are searched at the point they are specified
  1464.     (that is, specifying an object file that references a symbol defined
  1465.     in a library specified BEFORE the object file will cause an undefined
  1466.     symbol error).    Normally an object file is specified after a library
  1467.     to terminate an autoinit or autoexit section.
  1468.  
  1469.     You do not have to order object files within a library, DLink will
  1470.     automatically make as many passes as required to handle all internal
  1471.     library references.  However, ordering object files will make DLink
  1472.     go faster.
  1473.  
  1474.     Symbols defined in object files override symbols defined in
  1475.     libraries. Symbols defined in libraries specified before later
  1476.     libraries override symbols defined in later libraries.    Symbols
  1477.     defined in a library and also defined in a later specified object
  1478.     module causes an error. -o execname name of executable
  1479.  
  1480.     -s  Include symbolic information.
  1481.  
  1482.         || NOTE: if -r is used symbolic info for the data sections will
  1483.         || point to the statically init'd stuff, NOT The actual data
  1484.         || space (in BSS) referenced by the code.  This is a bug.
  1485.  
  1486.      -frag  Fragment output file (default is to coagulate all hunks of the
  1487.         same type regardless of name).  If frag is specified then only
  1488.         hunks of the same type AND name are coagulated.
  1489.  
  1490.         see fragmentation note at bottom
  1491.  
  1492.     -r[es]  Resident link.
  1493.  
  1494.        -pi  Position independent non-residentable (i.e.  only one copy of the
  1495.         data but also no relocation hunks)
  1496.  
  1497.         -pr residentable position independent
  1498.  
  1499.  -Ppostfix  specify library name postfix.  If DLink cannot find the library
  1500.         as specified it will append the postfix and try again.  Used by
  1501.         DCC to specify the memory model.
  1502.  
  1503.   -mw addr  specify absolute data base
  1504.  
  1505.   -ma addr  specify absolute data base
  1506.  
  1507.         Both options do exactly the same thing and are in duplicate to
  1508.         conform to DCC's options.
  1509.  
  1510.   -mw
  1511. -ma   specify the base of data as a decimal, 0octal, or 0xHEX address.
  1512.         You must use the -r option in conjunction with these options.
  1513.  
  1514.         DLink will resolve all Absolute-Word addresses but not all
  1515.         Absolute-Long addresses.  This is left up to the ROMABLE program
  1516.         which generates a raw binary image of the program that can then
  1517.         be transferred to an EPROM.
  1518.  
  1519.         || NOTE: Do not use this option when generating Amiga
  1520.         || executables.
  1521.  
  1522.      -d[#]  debug mode (spews lots of debugging junk out)
  1523.  
  1524.    -E file  specify stderr file, any errors are appended to the file instead
  1525.         of to stdout.  Useful for batch compiles
  1526.  
  1527.      -chip  chip-only - forces all hunks into CHIP memory
  1528.  
  1529.        -L0  remove default library search path, including all explicitly
  1530.         specified (-L dir) directories up to this point.
  1531.  
  1532.     -L dir  add the specified directory to the library search path.  If the
  1533.         object module or library can not be found in the current
  1534.         directory, directories specified with -L are searched.  -L
  1535.         directories are searched before the default library directory
  1536.         (DLIB:), assuming it was not removed with -L0 .
  1537.  
  1538.         Note that the directory path specified by -L is used to search
  1539.         for libraries AND object modules.
  1540.  
  1541.         A trailing '/' is optional
  1542.  
  1543.  -Ppostfix  This allows you to specify -lc -Ps and DLink will automatically
  1544.         look for cs.lib ...  you can specify a postfix that occurs before
  1545.         the .lib in the library name here.    If DLink cannot find the
  1546.         library as it is named by default it will try it with the
  1547.         postfix.
  1548.  
  1549.         DCC uses this to supply the memory model to DLINK also allowing
  1550.         the user to say -lm in DCC and have it find MS.LIB if you are
  1551.         using the small-data model.
  1552.  
  1553.     CREATING A LIBRARY
  1554.     DLink libraries are standard Amiga libraries...  simply join one or
  1555.     more object modules together and rename the result with a .lib
  1556.     extension.
  1557.  
  1558.     LINKER SYMBOLS
  1559.     DLink generates the following special symbols to aid in program
  1560.     startup:
  1561.  
  1562.  Symbol     : Meaning
  1563.  ===============+============================================================
  1564.  __ABSOLUTE_BAS : Base of data in volatile space.  This symbol    is NOT
  1565.         : defined for normal residentable programs since the base
  1566.         : address  is not known (must be allocated run-time)
  1567.  ---------------+------------------------------------------------------------
  1568.  __DATA_BAS    : Base of data in non-volatile space.  This symbol  points
  1569.         : to a read-only copy of the initialized data for a program.
  1570.         : For  Non-residentable programs this is the same as
  1571.         : __ABSOLUTE_BAS.
  1572.         : For residentable programs this points to a read-only copy
  1573.         : of the initialized  data that the program can duplicate on
  1574.         : startup.
  1575.         : For programs linked with an absolute base address for data
  1576.         : this points  to the end of the CODE section.    The ROMABLE
  1577.         : program always generates  a ROM copy of the initialized
  1578.         : data just after the CODE section (which  startup code must
  1579.         : copy into RAM)
  1580.  ---------------+------------------------------------------------------------
  1581.  __DATA_LEN    : Length of data space is longwords.  i.e.  __DATA_LEN*4
  1582.         : yields the number of bytes of initialized data.  This is
  1583.         : used by startup  code to copy read-only initialized data
  1584.         : to volatile space (residentable  and data-absolute
  1585.         : programs)
  1586.  ---------------+------------------------------------------------------------
  1587.  __BSS_LEN    : Length of bss space in longwords.  i.e.  __BSS_LEN*4
  1588.         : yields the number of bytes of uninitialized (BSS) data.
  1589.         : This is used    in combination with __DATA_LEN to allocate
  1590.         : the DATA+BSS    space for residentable programs, and clear
  1591.         : the BSS space for non-residentable  and absolute-data-base
  1592.         : programs.
  1593.         : The BSS space occurs after the DATA space unless the -frag
  1594.         : option  is used.
  1595.  ---------------+------------------------------------------------------------
  1596.  __RESIDENT5D    : This symbol is set to 0 if the -r option  was used and 1
  1597.         : if the -r option was not used.  If set to 1 (-r  option)
  1598.  ---------------+------------------------------------------------------------
  1599.  
  1600.     Programs linked with the -mw or -ma options obviously do not
  1601.     'allocate' their data space since it is predefined.  Most Amiga
  1602.     programmers will never use the -mw or -ma options, by the way.
  1603.  
  1604.     SMALL DATA MODEL
  1605.     The small data model uses A4 relative addressing.  The linker sets up
  1606.     all relative offsets such that A4 must be initialized by startup code
  1607.     the BaseOfInitializedData + 32766 for A4-relative references to
  1608.     access the appropriate address.
  1609.  
  1610.     RESIDENT
  1611.     If the -r options is given then NO BSS SPACE is allocated after the
  1612.     data space...  the startup code MUST allocate a data+bss space as
  1613.     shown above.  DLink will give error messages for any absolute data
  1614.     references that occur (except the __DATA_BAS symbol which must be
  1615.     used to copy the static data to the newly allocated data+bss memory
  1616.     on program startup).
  1617.  
  1618.     DLink will give an error message if any data-data reloco32s exist
  1619.     when you specify the -r option as such relocations would be incorrect
  1620.     when copied to the newly allocated data+bss space.  DC1 understands
  1621.     this and will produce autoinit code to handle any such static data
  1622.     relocations that occur in your C code when the -r option is given to
  1623.     compile a C program.
  1624.  
  1625.     However, DLink does allow data-data relocations to occur if an
  1626.     absolute data base is specified along with the -r option.  This is
  1627.     used only when making ROMABLE code.
  1628.  
  1629.     PC-RELATIVE
  1630.     Because the linker will insert a jump table for PC-RELATIVE
  1631.     references to different hunks (after coagulation) or where the range
  1632.     is larger than +/-32K, data should not be placed into a code segment
  1633.     and be referenced via an external label(pc) unless you are positive
  1634.     the reference is within +/-32K.  This can only happen when
  1635.     referencing between like-named code hunks.  NOTE that the jump table
  1636.     is tagged onto the end of the section the jump(s) occur in and thus
  1637.     you do not want to have any autoinit/autoexit code that might
  1638.     possibly generate a jump table (since the whole idea with autoinit is
  1639.     that the code falls through to other autoinit code until the
  1640.     terminating section in x.o's RTS).
  1641.  
  1642.     Currently dlink cannot handle inter-module PC-RELATIVE references
  1643.     beyond +/-32K (i.e.  when one object file has more than 32K of code).
  1644.     An error will occur.
  1645.  
  1646.     Note that if -frag is used you cannot make PC-RELATIVE calls between
  1647.     sections of differing names ever, or make a program resident.  The
  1648.     -frag option is almost never used on untested.
  1649.  
  1650.     || NOTE: When -frag is specified, the linker will not create a
  1651.     || special combined data+bss hunk (so data and bss can both be
  1652.     || referenced with one base variable).
  1653.  
  1654.     However, when -frag is NOT specified, the linker will stil not
  1655.     necessarily combine ALL data hunks into one big hunk and ALL bss
  1656.     hunks into one big hunk.  Any data or bss hunk with special upper
  1657.     bits set (e.g. to force it into chip) is not combined into these
  1658.     special hunks, and any data or bss hunk whos NAME begins with 'far'
  1659.     (upper or lower case) will also not be considered.
  1660.  
  1661.     EXAMPLE
  1662.     This is what DCC gives the linker to link the program foo.c:
  1663.  
  1664.     dlink dlib:c.o @tmp dlib:x.o -o ram:foo
  1665.  
  1666.     Where tmp contains:
  1667.  
  1668.     foo.o
  1669.     dlib:c.lib
  1670.     dlib:amiga.lib
  1671.     dlib:auto.lib
  1672.  
  1673.     Basically it tells dlink to link the startup code, c.o, then the
  1674.     program object module(s) (foo.o), then c.lib, amiga.lib, and
  1675.     auto.lib, then finally x.o.
  1676.  
  1677.     DCC handles all this for you
  1678.  
  1679.     auto.lib contains autoinit code for certain selected libraries,
  1680.     including the dos.library.  Autoinit code is brought in whenever a
  1681.     given library base symbol has been referenced BUT NOT DEFINED.
  1682.     auto.lib defines the symbol and generates autoinit code to open the
  1683.     library and autoexit code to close the library.  To maintain
  1684.     portability you probably do not want to use this automatic
  1685.     library-opening feature yourself, it is really meant to support
  1686.     certain actions of the DICE library (such as floating point support).
  1687.  
  1688.     x.o terminates the autoinit and autoexit sections with an RTS
  1689.     instruction.  The autoinit and autoexit sections are called from the
  1690.     startup code c.o.
  1691.  
  1692. dice/dmake                                                        dice/dmake
  1693.  
  1694.     FUNCTION
  1695.     Make Utility
  1696.  
  1697.     SYNOPSIS
  1698.     dmake [file]
  1699.  
  1700.     DESCRIPTION
  1701.     Make utilities automate complex compiles.  Makefiles can be
  1702.     considered recipes for complex programs.  Makefiles contain
  1703.     "dependencies," which are rules that say things like "if this header
  1704.     file changes, recompile this C file."
  1705.  
  1706.     The idea with DMake is to provide a powerful make utility through
  1707.     general features rather than specialized hacks.  DMake is governed by
  1708.     a few simple rules that can be combined into incredibly powerful
  1709.     operations.
  1710.  
  1711.     Generally you simply run DMake and have a list of dependencies in
  1712.     your DMakefile which DMake then executes.  The DMakefile may contain
  1713.     three different kinds of lines:
  1714.  
  1715.     1) COMMENTS -- Any line beginning with a '#' is a comment and ignored
  1716.  
  1717.     # This DMakefile generates an executable for fubar
  1718.     # The compiler options are as follows ...
  1719.  
  1720.     1) ASSIGNMENTS -- Any line of the form SYMBOL = ...  is considered an
  1721.        assignment.    Any variable references from within the assignment
  1722.        will be resolved immediately.
  1723.  
  1724.     CFLAGS= -r SRCS= x.c y.c z.c
  1725.  
  1726.     1) DEPENDENCIES: -- A line containing a list of symbols, a colon, and
  1727.        more symbols is assumed to be a dependency.    Note that you cannot
  1728.        have a raw filename with a colon in it as that confuses DMake.
  1729.        Instead, use an ASSIGNMENT variable.
  1730.  
  1731.     Following the dependency line is zero or more command lines --
  1732.     commands to run to resolve the dependency, terminated with a blank
  1733.     line.
  1734.  
  1735.     || NOTE: Not only is a zero-command dependency allowed, it is
  1736.     || sometimes necessary.
  1737.  
  1738.     A particular destination may have only ONE command list so if you
  1739.     have something like
  1740.  
  1741.     a.o : a.c
  1742.  
  1743.     with a command list to compile the source into an object you can also
  1744.     have another dependency such as 'a.o : defs.h' which would NOT have
  1745.     any associated command list.
  1746.  
  1747.     dst1 ...  dstN : src1 ...  srcN command1 command2 ...
  1748.     dst1 ...  dstN : src1 ...  srcN command1 command2 ...
  1749.  
  1750.     Finally, note that a dst* or src* symbol does not need to be a
  1751.     filename.  It is perfectly valid to make up dummy names which are
  1752.     then used as the lhs of a dependency that collects other dependencies
  1753.     together.
  1754.  
  1755.     DEPENDENCIES
  1756.     When declaring dependencies you may use four different forms.  The
  1757.     first form is to have a single destination and several sources.  This
  1758.     is interpreted to mean that ALL the sources must be resolved before
  1759.     the single destination can be resolved via the command list for the
  1760.     dependency.  The special variable, %(left), is set to the dst symbol
  1761.     and the special variable %(right) is set to ALL of the src symbols
  1762.  
  1763.     For example, this form would be used to indicate that an executable
  1764.     depends on all the objects being resolved before you can run the
  1765.     link.
  1766.  
  1767.     dst : src1 src2 src3 ...  srcN
  1768.  
  1769.     The second form is the most useful in that it allows you to specify
  1770.     multiple 1 : 1 dependencies.  Thus, you can specify, for example,
  1771.     that each object file depends on its source file counterpart for ALL
  1772.     the files in your project on a single line and have a single command
  1773.     list representing what to do (to compile a source file into an
  1774.     object, say).
  1775.  
  1776.     In this case %(left) and %(right) are set to each dst* : src* pair
  1777.     individually and the command list is run for any individual pair that
  1778.     is out of date.
  1779.  
  1780.     dst1 dst2 dst3 ...  dstN : src1 src2 src3 ...  srcN
  1781.  
  1782.     The next form may be used to specify that many files depend on one
  1783.     file being resolved.  An example of usage would be to make all the
  1784.     object files depend on one header file.  The command list, if any, is
  1785.     run for each dst* : src pair with %(left) set to the current dst* and
  1786.     %(right) set to the single source.
  1787.  
  1788.     dst1 dst2 dst3 ...  dstN : src
  1789.  
  1790.     The last form is esoteric but sometimes useful.  EACH dst* on the
  1791.     left hand side depends on the entire right hand side.  You can have
  1792.     an arbitrary number of symbols on either side.    %(left) will be set
  1793.     to a particular DST while %(right) will be set to all of the SRCs.
  1794.  
  1795.     for example, you could specify $(OBJS) :: $(HDRS) -- make all objects
  1796.     depend on all headers causing a recompile to occur if any header is
  1797.     modified.
  1798.  
  1799.     dst1 dst2 dst3 ...  dstN :: src1 src2 ...  srcI
  1800.  
  1801.     WILDCARDS
  1802.     DMake's most powerful feature is an easy to use file list replacement
  1803.     through options in a variable specification.  You may insert the
  1804.     contents of any variable using the form:
  1805.  
  1806.     $(SYMBOL)
  1807.  
  1808.     Furthermore, you can make modifications to the contents of the
  1809.     variable on the fly using:
  1810.  
  1811.     $(SYMBOL:wildcard)
  1812.  
  1813.     only those files which match wildcard
  1814.  
  1815.     $(SYMBOL:wildcard:wildcard)
  1816.  
  1817.     matching files and also do a conversion
  1818.  
  1819.     Simple */? wildcarding is used.  A wildcard may contain a colon or
  1820.     other punctuation but if it does you MUST surround it with quotes.
  1821.     Here is a quick example:
  1822.  
  1823.     SRCS= a.c b.c c.c d.c xx.a
  1824.     OBJS= $(SRCS:*.c:"dtmp:%1.o")
  1825.  
  1826.     all: echo $(OBJS)
  1827.  
  1828.     Will Produce
  1829.  
  1830.     dtmp:a.o dtmp:b.o dtmp:c.o dtmp:d.o
  1831.  
  1832.     The first wildcard specification restricts which files from the list
  1833.     are to be taken -- 'xx.a' was ignored, as you can see.  Each '*' or
  1834.     '?' in the first wildcard specification corresponds to %N
  1835.     specifications in the second wildcard specification.  You can
  1836.     prepend, insert, or append text and freely mix or ignore items
  1837.     matched to create your destination file list.
  1838.  
  1839.     This capability allows you to specify your source files EXACTLY ONCE
  1840.     in the DMakefile and then use the file munging capability to convert
  1841.     them to the object file list, etc...
  1842.  
  1843.     You can embed variables within variables as with the following
  1844.     example (note that this time xx.a is included):
  1845.  
  1846.     OD= dtmp:fubar/
  1847.     SRCS= a.c b.c c.c d.c xx.a
  1848.     OBJS= $(SRCS:*.?:"$(OD)%1.o")
  1849.  
  1850.     all: echo $(OBJS)
  1851.  
  1852.     Will produce
  1853.  
  1854.     dtmp:fubar/a.o dtmp:fubar/b.o dtmp:fubar/c.o
  1855.     dtmp:fubar/d.o dtmp:fubar/xx.o
  1856.  
  1857.     As a side note, you may also specify '?' and '*' in the destination
  1858.     wildcard.  These are considered dummies and are equivalent to %N
  1859.     where N is incremented from 1..9 for each '?' or '*' encountered.
  1860.  
  1861.     You can use the capability anywhere in the DMakefile.  Another common
  1862.     thing to do is restrict your link line to include only the object
  1863.     files and skip the headers:
  1864.  
  1865.     $(EXE) : $(PROTOS) $(OBJS) $(HDRS)
  1866.     dcc %(right:*.o) -o %(left)
  1867.  
  1868.     ENVIRONMENT VARIABLES
  1869.     2.0 local variables and 1.3/2.0 ENV: variables are fully accessible.
  1870.     Under 2.0 you can also modify local variables on the fly.
  1871.     DMake-specific variables override 2.0 local variables override ENV:
  1872.     variables.
  1873.  
  1874.     Under 2.0, any command containing <, >, `, or |, or is an alias, will
  1875.     be run with System().  Thus, such commands may not be used to modify
  1876.     local variables or the local environment.  Also, such commands cannot
  1877.     be ^C'd due to the way AmigaDOS works.
  1878.  
  1879.     EXAMPLE
  1880.     The following is an example dmakefile.    The variable $(FILES) is set
  1881.     to "main input output".  The next two variables are constructed from
  1882.     $(FILES).  The command $(FILES:*:"*.c") tells dmake to take $(FILES),
  1883.     look up each item ":*", and append two characters ":*.c".  The
  1884.     results of the conversions are listed above.  This unique feature of
  1885.     dmake makes for very elegant DMakeFiles.
  1886.  
  1887.     The first rule is the default rule, executed if you just type dmake.
  1888.     The rule, "sample:", states that the resulting program, "sample", is
  1889.     made up from the files listed in $(FILE_OBJECTS). If the date on
  1890.     "sample" is older than any dates in $(FILE_OBJECTS), the rule will
  1891.     execute.
  1892.  
  1893.     In turn, the next rule states that $(FILE_OBJECTS) ("main.o input.o
  1894.     output.o") are made from $(FILE_SOURCES) ("main.c intput.c
  1895.     output.c").  If any of the .o files are older than the corresponding
  1896.     .c file, the rule executes.
  1897.  
  1898.     In short, the makefile is a description of how source files inter
  1899.     depend.  When any file changes, dmake figures the minimum number of
  1900.     steps to regenerate the final result.  If you change just "input.c",
  1901.     only "input.c" will recompile.
  1902.  
  1903.     The last rule, "clean:", has no dependencies (nothing on the right
  1904.     side of the :).  When executed, this rule deletes all the
  1905.     compiler-generated files, but not the source code. To execute this
  1906.     rule, type "dmake clean".  Any number of rules may exist in a single
  1907.     DMakeFile.
  1908.  
  1909.  #    DMakeFile - generic           : The # character introduces a comment.
  1910.  #                  :
  1911.  ---------------------------------+-----------------------------------------
  1912.  FILES = main input output      : Equals "main input output"
  1913.  FILE_SOURCES = $(FILES:*:*.c")   : Set to "main.c input.c output.c"
  1914.  FILE_OBJECTS = $(FILES:*:"t:*.o) : Set to "t:main.o t:input.o t:output.o"
  1915.  ---------------------------------+-----------------------------------------
  1916.  sample: $(FILE_OBJECTS)      : Rule: sample is made from
  1917.  dcc $(FILE_OBJECTS) -o sample      : FILE_OBJECTS (defined above as
  1918.                   : "t:main.o t:input.o t:output.o")
  1919.  ---------------------------------+-----------------------------------------
  1920.  $(FILE_OBJECTS) :          : Rule: FILE_OBJECTS are made from
  1921.  $(FILE_SOURCES)          : FILE_SOURCES (see above).
  1922.  dcc -c %(right) -o %(left)      :
  1923.  ---------------------------------+-----------------------------------------
  1924.  clean:               : Rule: "dmake clean"  executes this
  1925.  delete $(FILES) $(FILE_OBJECTS)  : delete command.
  1926.  ---------------------------------+-----------------------------------------
  1927.  
  1928.     LINE CONTINUATION AND ESCAPES
  1929.     Any line may be continued by terminating it with a backslash '\'.  It
  1930.     is possible to escape the special characters '$' and '%' by doubling
  1931.     them though this is only necessary if an open-parenthesis follows the
  1932.     '$' or '%' and you do not want it interpreted as a variable.
  1933.  
  1934.     It is possible to escape ':' and other special characters by
  1935.     assigning them (or a string containing them) to a variable
  1936.  
  1937.     COMMAND SHELL
  1938.     Under 2.0 commands that do not contain any sort of redirection are
  1939.     run with RunCommand().    If a command is an alias or there is some
  1940.     sort of redirection in the arguments it will be run with System().
  1941.  
  1942.     Under 1.3 everything is run with Execute()
  1943.  
  1944.     ADVANCED CAPABILITIES
  1945.     Now, you may have noted earlier that I said you could not have any
  1946.     given left-hand-side with more then one command list.  Take, for
  1947.     example:
  1948.  
  1949.     a.o : a.c dcc %(right) -o %(left)
  1950.  
  1951.     a.o : defs.h <--- illegal to put command list here
  1952.  
  1953.     Actually, it isn't illegal.  When DMake encounters a dependency
  1954.     without a command list it will automatically 'force' the next higher
  1955.     level dependency of the same left-hand-side.  Therefore if you do not
  1956.     have a command list for the lower level left-hand-side things work as
  1957.     you expect.  Note that this requires all such null dependencies to
  1958.     exist AFTER the one that has the command list.
  1959.  
  1960.     If you do have two or more command lists for the same left-hand-side
  1961.     they will run independent of each other according to their individual
  1962.     right hand sides.  If several command lists apply then their order of
  1963.     execution will be bottom-up
  1964.  
  1965.     TEST FOR EXISTENCE
  1966.     Another advanced feature quite useful in fully automating the
  1967.     compilation process is the ability to create a directory tree on the
  1968.     fly.  That is, if you have a projects called 'fubar' and want the
  1969.     objects to go into the directory DTMP:fubar/ you might want to have a
  1970.     dependency that creates DTMP:fubar if it does not already exist.
  1971.  
  1972.     XX= dtmp:fubar
  1973.     $(XX) : $(XX) makedir %(left)
  1974.  
  1975. dice/dme                                                            dice/dme
  1976.  
  1977.     FUNCTION
  1978.     Editor
  1979.  
  1980.     SYNOPSIS
  1981.     Dme file
  1982.  
  1983.     DESCRIPTION
  1984.     Dme is a full screen programmable editor.  See chapter nine for
  1985.     complete documentation.
  1986.  
  1987. dice/dobj                                                          dice/dobj
  1988.  
  1989.     FUNCTION
  1990.     Disassemble objects, executables, or Libraries
  1991.  
  1992.     SYNOPSIS
  1993.     DOBJ object_files [-o outfile] [-nd] [-nc] [-d[#]]
  1994.  
  1995.     DESCRIPTION
  1996.     DOBJ disassembles object modules and libraries into assembly.  DOBJ
  1997.     is useful for, say, finding bugs in an assembler.  Most DICE users
  1998.     will use DOBJ to browse through libraries and object modules, and
  1999.     perhaps to check DAS optimizations...  for example, branch
  2000.     optimizations will show up in disassembled object modules that are
  2001.     not otherwise apparent by looking at assembly output (DCC -a).
  2002.  
  2003.     DOBJ generates output to the console unless the -o option is used.
  2004.     The -d option is for debugging the DOBJ program itself and not
  2005.     normally used.
  2006.  
  2007.  -o filename
  2008.         redirect output
  2009.  
  2010.      -d[#]  Set debug level
  2011.  
  2012.        -nd  Do not show actual data, only display symbol names
  2013.  
  2014.        -nc  Do not disassemble actual code, only display symbol names
  2015.  
  2016.         DOBJ will replace hunk/offset references with symbol names when
  2017.         possible to yield a more readable output, and interprets each
  2018.         hunk according to its type (CODE, DATA, or BSS).
  2019.  
  2020.         There is NO limit to the size of the object file that may be
  2021.         disassembled, but it should be noted that DOBJ can take a while
  2022.         to resolve a large object file's symbols so be patient.  DOBJ
  2023.         does not take up much memory run-time, even when disassembling
  2024.         large object modules.
  2025.  
  2026.         ## WARNING: DOBJ does not does not understand any 68020/030
  2027.         ## instructions yet.
  2028.  
  2029. dice/dprof                                                        dice/dprof
  2030.  
  2031.     FUNCTION
  2032.     Code Profiler
  2033.  
  2034.     SYNOPSIS
  2035.     DPROF proffile [-call]
  2036.  
  2037.     DESCRIPTION
  2038.     This utility allows you to discover where time is used in your
  2039.     program.  Careful analysis of the output can help you focus on areas
  2040.     of your code that would be most valuable to optimize.
  2041.  
  2042.     DPROF generates profiling output from the binary data file generated
  2043.     by an executable which was compiled with profiling enabled.
  2044.  
  2045.     In order to use DPROF you must compile your program with the -prof
  2046.     option.  There are three levels of profiling:
  2047.  
  2048.  Dcc Option : Effect
  2049.  ===========+===============================================================
  2050.  -prof1     : Profile only your code
  2051.  -----------+---------------------------------------------------------------
  2052.  -prof2     : Profile your code and the standard C library
  2053.  -----------+---------------------------------------------------------------
  2054.  -prof3     : Profile your code, the C library, and the Amiga library  tags
  2055.  -----------+---------------------------------------------------------------
  2056.  
  2057.     To use -prof2 you must have installed DLIB:CSP.LIB (small data
  2058.     profiled c.lib) or DLIB:CSRP.LIB (small data profiled c.lib for
  2059.     registered arguments).
  2060.  
  2061.     To use -prof3 you must have installed DLIB:AMIGASP20.LIB (small data
  2062.     profiled amiga.lib) or DLIB:AMIGASRP20.LIB (small data profiled
  2063.     amiga.lib for registered arguments).
  2064.  
  2065.     USAGE
  2066.  
  2067.     ## WARNING: The profiling code is accurate to 20 microseconds under
  2068.     ## 2.0, 1/60 second under 1.3.    The profiling code itself will slow
  2069.     ## down a program by quite a bit but, in general, the system makes
  2070.     ## every attempt to filter out its profiling overhead in the
  2071.     ## statistics file (so the grand total time will be less then the
  2072.     ## actual amount of time the program took to run).
  2073.  
  2074.     Note, however, that the results will be skewed somewhat anyway, not
  2075.     only due to the overhead of the profiling code, but also due to task
  2076.     switches and other system overhead.  To get accurate results you
  2077.     should only run the executable that is to generate a .dprof file on
  2078.     an unloaded system (i.e.  don't do anything else while the executable
  2079.     is running).  Many calls to very short, quick routines will suffer
  2080.     the most and numbers should be taken more in a qualitative fashion
  2081.     than a quantitative fashion.
  2082.  
  2083.     Keep in mind that it is not necessary to profile everything,
  2084.     particularly for large projects.  You may want most of the system to
  2085.     run at full speed while only profiling a small part of it at a time.
  2086.  
  2087.     EXAMPLE
  2088.     Given a program called example.c (you can clip this from the online
  2089.     help and compile it):
  2090.  
  2091.     void fubar1(void);
  2092.     void fubar2(void);
  2093.     void loop(long);
  2094.  
  2095.     main(ac, av)
  2096.     char *av[];
  2097.     {
  2098.        short i;
  2099.        for (i = 0; i < 100; ++i)
  2100.        {
  2101.           fubar1();
  2102.           fubar2();
  2103.        }
  2104.        loop(10);
  2105.        fubar1();
  2106.        fubar2();
  2107.     }
  2108.  
  2109.     void fubar1()
  2110.     {
  2111.        short j;
  2112.        for (j = 0; j < 10000; ++j);
  2113.        fubar2();
  2114.     }
  2115.  
  2116.     void fubar2()
  2117.     {
  2118.        short j;
  2119.        for (j = 0; j < 100; ++j);
  2120.     }
  2121.  
  2122.     void loop(n)
  2123.     {
  2124.        if (n)
  2125.           loop(n - 1);
  2126.     }
  2127.  
  2128.     Compile and the run the program, then dump the profile.  the DPROF
  2129.     program automatically appends  '.dprof' onto the filename you
  2130.     specify.
  2131.  
  2132.     1> dcc test.c -o test -prof1
  2133.     1> test
  2134.     1> dprof test
  2135.  
  2136.  
  2137.     @@($)DPROF V2.06.01  Sep 30 1991     test.dprof
  2138.  
  2139.     GrandTotal:   539.53 mS
  2140.  
  2141.     **** BY ROUTINE ****
  2142.     _main    calls=1      total=  539.53 mS (100.00%) local=   10.37 mS (
  2143.      1.92%)
  2144.     _fubar1 calls=101    total=  517.45 mS ( 95.90%) local=  507.75 mS (
  2145.      94.10%)
  2146.     _fubar2 calls=202    total=   20.44 mS (  3.79%) local=   20.44 mS (
  2147.      3.79%)
  2148.     _loop    calls=11     total=    0.96 mS (  0.17%) local=    0.96 mS (
  2149.     0.17%)
  2150.  
  2151.     The total numbers are time spent in the function.  The local numbers
  2152.     are the same, except time spent calling other profiled subfunctions
  2153.     have been subtracted out.
  2154.  
  2155.     **** BY PARENT ****
  2156.     _fubar2 calls=202    total=   20.44 mS
  2157.         From _fubar1 calls=101    total=    9.69 mS ( 47.43%)
  2158.     From _main   calls=101      total=   10.75 mS ( 52.56%)
  2159.  
  2160.     This section shows who called the function, how many times, and how
  2161.     long that took.
  2162.  
  2163.     **** COMBINED CALL TREE ****
  2164.     _main    calls=1     tot=  539.53 (100.00)  loc=   10.37 (  1.92)
  2165.         _fubar1 calls=101    tot=  517.45 ( 95.90)  loc=  507.75 ( 94.10)
  2166.         _fubar2 calls=101    tot=   10.75 (    1.99)  loc=   10.75 (  1.99)
  2167.     _loop    calls=1     tot=    0.96 (  0.17)  loc=    0.08 (  0.01)
  2168.  
  2169.     The top line contains the same information from table 1.  Here main()
  2170.     calls fubar1() 101 times, fubar1() takes 517 mS total time over these
  2171.     calls. Also,  main() calls fubar2() directly 101 times and fubar2()
  2172.     takes 10 mS over these calls.  Note that fubar2()'s time is not the
  2173.     same as in table 1 because only those calls made from main() are
  2174.     counted here.  Percentages are relative to main().  The profiled data
  2175.     includes the entire call tree but for simplicity, recursive calls are
  2176.     simply shown with <SELF>.
  2177.  
  2178.      -call  You can request DPROF to print out the entire call tree.  This is
  2179.         done by adding the -call option to dprof.  Note, however, that
  2180.         this option may result in a huge amount of data printed out.  On
  2181.         the other hand, sometimes the data is quite useful especially
  2182.         when tracing subroutine stacking and other things.
  2183.  
  2184. dice/dsearch                                                    dice/dsearch
  2185.  
  2186.     FUNCTION
  2187.     Search for string in a file
  2188.  
  2189.     SYNOPSIS
  2190.     Dsearch string files
  2191.  
  2192.     DESCRIPTION
  2193.     Dsearch is used for searching for a string in a series of files.
  2194.     Wildcards are accepted.
  2195.  
  2196. dice/du                                                              dice/du
  2197.  
  2198.     FUNCTION
  2199.     Show Disk usage
  2200.  
  2201.     SYNOPSIS
  2202.     du path
  2203.  
  2204.     DESCRIPTION
  2205.     Du stands for "disk-usage".  This program returns disk space used by
  2206.     a directory or volume.    It attempts to account for all blocks used by
  2207.     a file, but the numbers are only estimates.
  2208.  
  2209. dice/dupdate                                                    dice/dupdate
  2210.  
  2211.     FUNCTION
  2212.     Distribution Maker
  2213.  
  2214.     SYNOPSIS
  2215.     DUPDATE dist-file dest-dir [options] [DISTFILE distfilename]
  2216.  
  2217.     DESCRIPTION
  2218.     DUPDATE is a program that creates distributions.  It creates an exact
  2219.     duplicate of the source directory tree in the destination with
  2220.     modifications according to control files in the tree.  DUPDATE
  2221.     deletes files in the destination tree that do not exist in the source
  2222.     and updates files from the source into the destination tree that have
  2223.     been modified since the last dupdate (or copies them fresh if they do
  2224.     not exist).
  2225.  
  2226.      FORCE  DUPDATE will not ask permission to copy a fresh file
  2227.  
  2228.      QUIET  DUPDATE will not display verbose output
  2229.  
  2230.      NODEL  DUPDATE will not delete files in the destination that do not
  2231.         exist in the source.
  2232.  
  2233.  DISTFILE file
  2234.         Specify alternate control file that 'modifies' the dist update,
  2235.         default is .DistFiles
  2236.  
  2237.         If a file ".DistFiles" exists in any directory of the source
  2238.         tree, updating of the destination is modified according to the
  2239.         file.  This is a text file which may specify additional
  2240.         files/directories to add to the destination directory (pulled
  2241.         from other random places), files and directories NOT to include
  2242.         in the destination tree, or a list of specific files to include
  2243.         (where files not listed are not included).
  2244.  
  2245.         By using the DISTFILE file option you can generate different
  2246.         distributions for different purposes all based in the same source
  2247.         tree.  For example, I have a DISTFILE set to create the
  2248.         registered and non-registered DICE distributions and other
  2249.         DISTFILE files (using different names) to create the three
  2250.         floppies in the registered distribution.
  2251.  
  2252.         In the first format, if the ONLY keyword is specified after the
  2253.         first file name only these files / sub-directories will be
  2254.         included from this directory.  No other files will be copied
  2255.  
  2256.         file_or_dir_name ONLY
  2257.         file_or_dir_name
  2258.         file_or_dir_name
  2259.         file_or_dir_name
  2260.         file_or_dir_name
  2261.  
  2262.         The second format allows files/directories to be made part of the
  2263.         destination tree that do not necessarily exist in the current
  2264.         directory. Additionally, specific files/directories that do exist
  2265.         in the current directory can be excluded.  Any file/dir not
  2266.         explicitly unincluded using the 'no' keyword will be copied.
  2267.  
  2268.         file_or_dir_path
  2269.         file_or_dir_path
  2270.         file_or_dir_path
  2271.         no file_or_dir_path
  2272.         no file_or_dir_path
  2273.         file_or_dir_path
  2274.  
  2275. dice/expand                                                      dice/expand
  2276.  
  2277.     FUNCTION
  2278.     expand wildcards
  2279.  
  2280.     SYNOPSIS
  2281.     expand [format] wildcards
  2282.  
  2283.     DESCRIPTION
  2284.     Expand functions like the AmigaDOS 2.0 "LIST LFORMAT" command, Expand
  2285.     generates a list of files, one per line, using the specified format
  2286.     string (the default is "%s").
  2287.  
  2288.     1> expand "type %s" #?
  2289.  
  2290.     The above would create one "type" command for every file in the
  2291.     current directory.
  2292.  
  2293. dice/fdtolib                                                    dice/fdtolib
  2294.  
  2295.     FUNCTION
  2296.     Create Link Libraries from .FD files
  2297.  
  2298.     SYNOPSIS
  2299.     FDTOLIB files/wildcard.fd [-h hdrfile] -o libname [-mr] [-mD]
  2300.  
  2301.     DESCRIPTION
  2302.     FDTOLIB will create an amiga standard link library out of specified
  2303.     .FD files (for example, you can generate most of amiga.lib by using
  2304.     the .FD files on your 1.3 Extras disk).  .FD files are a standard
  2305.     format file that describe the function names and offsets of shared
  2306.     Amiga (Exec) libraries.  See section 6.4 for a description of the
  2307.     format.  fdtolib creates the interface stubs and the AutoInit code
  2308.     used by DICE to automatically open and close the library.
  2309.  
  2310.     Basically, FDTOLIB will generate one of four types of libraries:
  2311.  
  2312.       Option  : Library Type
  2313.       ========+=========================================================
  2314.       default : small-data model
  2315.       --------+---------------------------------------------------------
  2316.       -mD     : large-data model
  2317.       --------+---------------------------------------------------------
  2318.       -mr     : small-data model + DICE registered parameters entry pts
  2319.       --------+---------------------------------------------------------
  2320.       -mr -mD : large-data model + DICE registered parameters entry pts
  2321.       --------+---------------------------------------------------------
  2322.  
  2323.     If -mr is used suitable prototypes must be specified with the -h
  2324.     option. In this case, FDTOLIB will run DCC with a special option to
  2325.     have it generate a register-specification file for it to match up
  2326.     again the .FD files.
  2327.  
  2328.     FDTOLIB then proceeds to scan the .FD files, creating temporary
  2329.     assembly files in T: and assembling them with DAS, then appending
  2330.     them to
  2331.  
  2332.     the output library and deleting the scratch files.  This step occurs
  2333.     for each function in each .FD files.
  2334.  
  2335.     (For faster operation, you will want to make DAS resident for the
  2336.     duration)
  2337.  
  2338.     If -mr was specified, FDTOLIB only generates library entries for
  2339.     those routines for which a prototype exists.  At the end of the run
  2340.     FDTOLIB will report any routines which existed in the .FD files but
  2341.     did not have a prototype.
  2342.  
  2343.     files/wildcard.fd specifies one or more files and/or AmigaDOS
  2344.     wildcarding that represents the .FD files that are to be processed
  2345.     into a library
  2346.  
  2347.  -h hdrfile
  2348.         hdrfile is a .H files that #include's all prototypes associated
  2349.         with the .FD files.  It is only used if the -mr option is
  2350.         specified
  2351.  
  2352.  -o libname
  2353.         specify output library name
  2354.  
  2355.        -mr  specify that a REGISTERED call interface library is to be
  2356.         generated (for DICE -m[r,R,RR] options), else generates a normal
  2357.         stack-args interface library.
  2358.  
  2359.        -mD  specify large-data model, else small-data model
  2360.  
  2361.  -I include-dir
  2362.         passed to DCC
  2363.  
  2364.  -p prefix  Set prefix (currently only for standard generation, doesn't work
  2365.         with -mr).    The default is a single underscore _.
  2366.  
  2367.      -prof  Generate profiling code for the tags.  This will cause all
  2368.         library calls to be profiled when the program that links with
  2369.         this library is run.
  2370.  
  2371.  -auto library
  2372.         Generate auto-init code for library after the tags.  library is
  2373.         the name of the shared library.  For example, -auto fubar.library
  2374.  
  2375.  -AUTO library
  2376.         Generate ONLY auto-init code for library (do not generate tags)
  2377.  
  2378. dice/fdtopragma                                              dice/fdtopragma
  2379.  
  2380.     FUNCTION
  2381.     Create #pragma statements from .FD files
  2382.  
  2383.     SYNOPSIS
  2384.     fdtopragma source/ [-o dest]
  2385.  
  2386.     fdtopragma
  2387.     This program generates header files containing #pragma libcall lines
  2388.     for use with inline library calls.  #pragma is an ANSI C mechanism to
  2389.     allow compiler extensions.  #pragma libcall is an Amiga standard for
  2390.     describing shared library entries, allowing the compiler to generate
  2391.     calls directly, rather than requiring linking in cumbersome interface
  2392.     functions.  .FD files are a standard format file that describe the
  2393.     function names and offsets of shared runtime libraries. See section
  2394.     6.3 for a description of the format.
  2395.  
  2396.     The source may be specified as a single file, or as a directory (with
  2397.     trailing /).  Under DICE, these header files are stored in
  2398.     DINCLUDE:CLIB/ and mimic the Commodore standard headers in
  2399.     DINCLUDE:AMIGA20/CLIB/.  The purpose of the mimricky is to have a
  2400.     single standard for specification of prototypes, the Commodore
  2401.     standard:
  2402.  
  2403.     #include <clib/exec_protos.h>
  2404.  
  2405.     If no pragma header exists, the Commodore standard header will be
  2406.     included. If a pragma header does exist, it will be included.  Rhe
  2407.     pragma header file explicitly #include's the original Commodore
  2408.     header file and then conditionally generate the #pragma lines based
  2409.     on whether you specified the -mi option to DCC.  The -mi option to
  2410.     DCC simply defines the preprocessor symbol __DICE_INLINE which causes
  2411.     the #pragma lines to be conditionally included.  It is important to
  2412.     note that great pains have been taken to allow you to turn on and off
  2413.     inline library calls for your program without having to modify the
  2414.     source in any way, shape, or form.
  2415.  
  2416. dice/flush                                                        dice/flush
  2417.  
  2418.     FUNCTION
  2419.     Flush Memory, Libraries, and Devices
  2420.  
  2421.     SYNOPSIS
  2422.     flush
  2423.  
  2424.     DESCRIPTION
  2425.     Flush causes a "memory panic," forcing all currently unused fonts,
  2426.     libraries, etc. to be removed from memory.  This is useful to free up
  2427.     large chunks of memory or force an old version of a library out of
  2428.     memory in order to test a new one.
  2429.  
  2430. dice/head                                                          dice/head
  2431.  
  2432.     FUNCTION
  2433.     Display start of a file
  2434.  
  2435.     SYNOPSIS
  2436.     head file
  2437.  
  2438.     DESCRIPTION
  2439.     Head prints the first ten lines of the specified file.
  2440.  
  2441. dice/ident                                                        dice/ident
  2442.  
  2443.     FUNCTION
  2444.     Identify Files
  2445.  
  2446.     SYNOPSIS
  2447.     ident [ -q ] [ file ...  ]
  2448.  
  2449.     DESCRIPTION
  2450.     Ident searches the named files or, if no file name appears, the
  2451.     standard input for all occurrences of the pattern $keyword:...$,
  2452.     where keyword is one of Author, Date, Header, Id, Locker, Log,
  2453.     Revision, RCSfile, Source, or State.  This command works much like
  2454.     the AmigaDOS version command.
  2455.  
  2456.     These patterns are normally inserted automatically by the RCS command
  2457.     co, but can also be inserted manually.    The option -q suppresses the
  2458.     warning given if there are no patterns in a file.
  2459.  
  2460.     Ident works on text files as well as object files and dumps.  For
  2461.     example, if the C program in file f.c contains
  2462.  
  2463.     char rcsid[] = "$Header: /home/dice/com/doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:37:09 dice Exp dice $";
  2464.  
  2465.     and f.c is compiled into f.o, then the command will print:
  2466.  
  2467.     1> ident f.c f.o
  2468.     f.c: $Header: /home/dice/com/doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:37:09 dice Exp dice $
  2469.     f.o: $Header: /home/dice/com/doc/RCS/dice_commands.doc,v 30.8 1994/08/18 05:37:09 dice Exp dice $
  2470.  
  2471.     SEE ALSO
  2472.     ci, co, rcs, rcsdiff, rcsintro, rcsmerge, rlog
  2473.  
  2474. dice/istrip                                                      dice/istrip
  2475.  
  2476.     FUNCTION
  2477.     Strip Comments From Include Files
  2478.  
  2479.     SYNOPSIS
  2480.     ISTRIP destprefix wildcards
  2481.  
  2482.     DESCRIPTION
  2483.     ISTRIP will strip comments and extraneous whitespace from all files
  2484.     specified by wildcards and create an output file under the same name
  2485.     prefixed by destprefix. ISTRIP preserves the copyright notice, and
  2486.     replaces comments with blank lines to avoid changing any line
  2487.     numbering.
  2488.  
  2489.     ISTRIP is very stupid in that it will not create the destination
  2490.     directory hierarchy.  The COPY command in the example below basically
  2491.     does that for us, the copied files are extraneous and overwritten
  2492.     when ISTRIP is run.
  2493.  
  2494.     ISTRIP is useful mainly for developers who obtain later versions of
  2495.     the commented Amiga includes and want to create an uncommented
  2496.     version (The uncommented includes are much smaller, yielding faster
  2497.     compilation).
  2498.  
  2499.     EXAMPLE
  2500.     1> copy dinclude:amiga13  ram:amiga13  ALL  QUIET
  2501.     1> cd dinclude:
  2502.     1> istrip  ram:  amiga13/#?/#?
  2503.  
  2504. dice/lbmake                                                      dice/lbmake
  2505.  
  2506.     FUNCTION
  2507.     Create Link Library
  2508.  
  2509.     SYNOPSIS
  2510.     libmake file options
  2511.  
  2512.     DESCRIPTION
  2513.     Libmake is a utility that will scan a file listings sources files for
  2514.     a library, determine what is out of date, compile the out of date
  2515.     modules (compile .c modules, assemble .a modules), and JOIN the whole
  2516.     thing together in the end to create a library.    Libmake is useful for
  2517.     creating large libraries that would otherwise overflow the command
  2518.     line length limit in DMakefile.
  2519.  
  2520.     Libmake takes several arguments, some optional:
  2521.  
  2522.       file  specify the control file that contains a list of source modules,
  2523.         see below.
  2524.  
  2525.     -v  verbose operation
  2526.  
  2527.     -n  dry run (do not actually compile/assemble/join anything)
  2528.  
  2529.  -Dmacro[=def]
  2530.         specify DCPP macro, i.e.  #define equivalent to be passed to all
  2531.         compiles.
  2532.  
  2533.  -o object_dir
  2534.         specify object directory prefix, if a directory must end in '/'
  2535.         or ':', allowing both file prefixes and directory paths.
  2536.  
  2537.  -l library
  2538.         specify library output file, usually something.lib
  2539.  
  2540.     -clean  instead of compiling/assembling/join'ing the library, delete ALL
  2541.         object modules from object_dir relating to the library.
  2542.  
  2543.        -pr  pass -pr option to DCC
  2544.  
  2545.     -proto  pass -proto option to DCC
  2546.  
  2547.       -mRR  specify reg-call opts to DCC.
  2548.  
  2549.        -mD  pass -mD to DCC, causes DCC to use the large-data model.  Default
  2550.         is to use the small-data model
  2551.  
  2552.        -mC  pass -mC to DCC, causes DCC to use the large-code model.  Default
  2553.         is to use the small-data model
  2554.  
  2555.      -prof  pass -prof to DCC, causes profiling code to be generated for all
  2556.         the routines in the library.
  2557.  
  2558.     CONTROL FILE
  2559.     The control file is named files.something by convention, for example,
  2560.     'files.c3lib', which happens to be the control file used generate
  2561.     C*.LIB.
  2562.  
  2563.     A control file may contain blank lines, lines that begin with a
  2564.     semi-colon (comments), and lines containing a file name optionally
  2565.     preceded by a '*'.  Here is an example:
  2566.  
  2567.     ; Full C library
  2568.     assert/assert.c
  2569.     assert/abort.c
  2570.     amiga/exit.c
  2571.     amiga/main.c
  2572.     amiga/wbmain.c
  2573.     *amiga/c.a
  2574.     *amiga/c_pi.a
  2575.     *amiga/c_pr.a
  2576.     *amiga/x.a
  2577.     amiga/config.a
  2578.  
  2579.     Lines beginning with a '*' tell LIBMAKE to compile/assemble the file
  2580.     but NOT to include the object module in the generated output library.
  2581.  
  2582.     Thus, in the above example amiga/c.a would be assembled but not made
  2583.     part of the DLIB:C.LIB
  2584.  
  2585.     Also note that the path specified for a given file is appended to the
  2586.     -o (object directory) specification.  Thus, if you were to use the
  2587.     following libmake line:
  2588.  
  2589.     1> libmake files.c3lib -o dtmp:xx/ -l dlib:xx.lib -pr -proto
  2590.  
  2591.     Then object modules would be created as follows:
  2592.  
  2593.     DTMP:XX/assert/assert.o
  2594.     DTMP:XX/assert/abort.o
  2595.     DTMP:XX/amiga/exit.o
  2596.     etc..
  2597.  
  2598.     You probably want to pre-create the directory structure required.
  2599.     Please refer to the library source archive for examples (no less than
  2600.     DMakefile's calling libmake to regenerate every single DICE library
  2601.     that exists!)
  2602.  
  2603.     NAMING CONVENTIONS
  2604.     In order to simplify the process, libmake makes assumptions about the
  2605.     type of file based on the extension.
  2606.  
  2607.   Extension : Libmake Action
  2608.   ==========+==============================================================
  2609.   .a        : Assemble with DAS
  2610.   ----------+--------------------------------------------------------------
  2611.   .a68        : Assemble with external assembler A68K
  2612.   ----------+--------------------------------------------------------------
  2613.   .o        : Insert specified object into destination library (raw copy)
  2614.   ----------+--------------------------------------------------------------
  2615.   .lib        : Insert specified library into destination library (raw copy)
  2616.   ----------+--------------------------------------------------------------
  2617.   other     : Assumed to be a C source file to compile with DCC
  2618.   ----------+--------------------------------------------------------------
  2619.  
  2620. dice/libtos                                                      dice/libtos
  2621.  
  2622.     FUNCTION
  2623.     Library Converter
  2624.  
  2625.     SYNOPSIS
  2626.     LIBTOS source dest
  2627.  
  2628.     DESCRIPTION
  2629.     This program converts the Commodore supplied amiga.lib from large
  2630.     data model to small data model.  You must convert amiga.lib before
  2631.     you can use it with the DICE system to generate residentable
  2632.     programs.
  2633.  
  2634.     Note that this isn't required, but a small-data amiga.lib will
  2635.     generate faster code with fewer reloc32's (A reloc32 is a 32-bit
  2636.     relocation, it uses up space in an executable and takes extra time to
  2637.     load).
  2638.  
  2639.     The small-data-model version of amiga.lib is called amigas.lib
  2640.  
  2641.     1> cd DLIB:
  2642.     1> LIBTOS amiga.lib amigas.lib
  2643.  
  2644. dice/loadabs                                                    dice/loadabs
  2645.  
  2646.     FUNCTION
  2647.     Absolute Locator
  2648.  
  2649.     SYNOPSIS
  2650.     LoadAbs exefile -o outfile -A addr
  2651.  
  2652.     DESCRIPTION
  2653.     LoadAbs takes a standard Amiga executable and generates an image file
  2654.     relocated to the absolute location specified.  The image file is
  2655.     structured in the same order as the hunks appear in the Amiga
  2656.     executable.  BSS hunks will generate 0's in the image file.
  2657.  
  2658.    exefile  Executable to do the absolute relocation on
  2659.  
  2660.  -O outfile
  2661.         Resulting image file
  2662.  
  2663.    -A addr  0xHEX absolute relocation address
  2664.  
  2665.         || NOTE: This program will do 32 bit relocations only.  Generally
  2666.         || you only use LoadAbs with -mD -mC compiled programs.
  2667.  
  2668. dice/loadfile                                                  dice/loadfile
  2669.  
  2670.     FUNCTION
  2671.     Load & Hold a File in Memory
  2672.  
  2673.     SYNOPSIS
  2674.     LoadFile filename
  2675.  
  2676.     DESCRIPTION
  2677.     Loadfile is very simple.  It just loads a binary file into memory,
  2678.     and holds it there until CTRL-C is pressed. This lets you examine the
  2679.     file with a debugger, or Metascope or some such tool.  Useful for ROM
  2680.     work.
  2681.  
  2682. dice/makeindex                                                dice/makeindex
  2683.  
  2684.     FUNCTION
  2685.     Build Index File for Online Help System
  2686.  
  2687.     SYNOPSIS
  2688.     MakeIndex outfile pattern
  2689.  
  2690.     DESCRIPTION
  2691.     MakeIndex builds a lookup file for the DICEHelp online help system.
  2692.     This file is normally called "s:dicehelp.index". Entries are always
  2693.     appended to outfile to allow building the index file in steps.    Any
  2694.     number of files may be specified with wildcards in pattern. MakeIndex
  2695.     detects DICE documentation, AutoDoc files from Commodore, C include
  2696.     files and Assembler include files. Documentation files are indexed by
  2697.     the name of the function.  C include files are indexed by structures.
  2698.     The names of assembler includes are recorded, but no additional
  2699.     processing is done.
  2700.  
  2701.     MakeIndex is normally run during the installation, or later by
  2702.     selecting the installer option "refresh DICEHelp index file."  You
  2703.     may append your own selections using MakeIndex.
  2704.  
  2705.     SEE ALSO
  2706.     Chapter Thirteen, Online help.
  2707.  
  2708. dice/makeproto                                                dice/makeproto
  2709.  
  2710.     FUNCTION
  2711.     Easily Create Prototype File
  2712.  
  2713.     SYNOPSIS
  2714.     makeproto infile outfile
  2715.  
  2716.     DESCRIPTION
  2717.     Collects lines beginning with the word Prototype from all your source
  2718.     files into a single header file.  Each source module in a project
  2719.     normally includes a common header file, DEFS.H, which contains items
  2720.     common to the project.    The idea is to add the following to your
  2721.     DEFS.H file:
  2722.  
  2723.     #define Prototype extern
  2724.     #define Local static /* or as nothing at all */
  2725.     #include "protos.h"   /* prototype file generated by MAKEPROTO
  2726.     Each source would contain prototypes that look like this (shown with
  2727.     example declarations):
  2728.  
  2729.     Prototype int FuGlob;
  2730.     Prototype void FuBar(int);
  2731.     Prototype struct MyFu *FuBar2(short);
  2732.  
  2733.     int FuGlob; /* etc... */
  2734.  
  2735.     void FuBar(int x) {
  2736.     ...
  2737.     }
  2738.     You then create a PROTOS.H file by running MAKEPROTO on all source
  2739.     files.    Among the tricks that are possible is the use of structure
  2740.     tags instead of typedefs in the prototypes themselves, allowing the
  2741.     prototype file to be #include'd during the normal course of
  2742.     compilation without necessarily requiring precursor includes to
  2743.     guarantee the validity of the types you use.  Since a declaration
  2744.     containing a pointer to an undefined structure is valid as long as
  2745.     you do not try to access specific elements in the structure, this
  2746.     allows you to bring in prototypes for all functions in your entire
  2747.     project whether you use them in any specific source module or not.
  2748.  
  2749.     MAKEPROTO has one additional feature which makes its usage all the
  2750.     more efficient... if the specified output file already exists
  2751.     MAKEPROTO will compare its output with the existing file and not
  2752.     modify the date stamp of the file unless the output diffs.  This is
  2753.     especially useful when you use precompiled includes where you might
  2754.     want to include a dependency to force the precompiled include to be
  2755.     recomputed if any header file OR the prototype file changes.  Without
  2756.     this feature you would have to force the precompiled include to be
  2757.     recomputed every time you modify a source file because you would not
  2758.     be able to determine whether that modification resulted in a change
  2759.     in the prototype file PROTOS.H or not.
  2760.  
  2761. dice/merge                                                        dice/merge
  2762.  
  2763.     FUNCTION
  2764.     Three-Way File Merge
  2765.  
  2766.     SYNOPSIS
  2767.     merge
  2768.  
  2769.     DESCRIPTION
  2770.     Merge is used by rcsmerge to do three way file merges - integrating
  2771.     changes from several revisions into a single complete file.
  2772.  
  2773.     SEE ALSO
  2774.     rcsmerge
  2775.  
  2776. dice/rcs                                                            dice/rcs
  2777.  
  2778.     FUNCTION
  2779.     Change RCS File Attributes
  2780.  
  2781.     SYNOPSIS
  2782.     rcs [ options ] file ...
  2783.  
  2784.     DESCRIPTION
  2785.     Rcs creates new RCS files or changes attributes of existing ones.  An
  2786.     RCS file contains multiple revisions of text, an access list, a
  2787.     change log, descriptive text, and some control attributes.  For rcs
  2788.     to work, the caller's login name must be on the access list, except
  2789.     if the access list is empty, the caller is the owner of the file or
  2790.     the superuser, or the -i option is present.
  2791.  
  2792.     Files ending in ,v are RCS files, all others are working files.  If a
  2793.     working file is given, rcs tries to find the corresponding RCS file
  2794.     first in directory ./RCS and then in the current directory, as
  2795.     explained in co.
  2796.  
  2797.     -i  creates and initializes a new RCS file, but does not deposit any
  2798.         revision.  If the RCS file has no path prefix, rcs tries to place
  2799.         it first into the subdirectory ./RCS, and then into the current
  2800.         directory.    If the RCS file already exists, an error message is
  2801.         printed.
  2802.  
  2803.   -alogins  appends the login names appearing in the comma-separated list
  2804.         logins to the access list of the RCS file.
  2805.  
  2806.  -Aoldfile  appends the access list of oldfile to the access list of the RCS
  2807.         file.
  2808.  
  2809.  -e[logins]
  2810.         erases the login names appearing in the comma-separated list
  2811.         logins from the access list of the RCS file.  If logins is
  2812.         omitted, the entire access list is erased.
  2813.  
  2814.    -b[rev]  sets the default branch to rev.  If rev is omitted, the default
  2815.         branch is reset to the (dynamically) highest branch on the trunk.
  2816.  
  2817.   -cstring  sets the comment leader to string.    The comment leader is printed
  2818.         before every log message line generated by the keyword $Log: dice_commands.doc,v $
  2819. # Revision 30.8  1994/08/18  05:37:09  dice
  2820. # .
  2821. #
  2822. # Revision 30.0  1994/06/10  17:54:40  dice
  2823. # .
  2824. #
  2825. # Revision 30.0  1994/06/10  17:54:40  dice
  2826. # .
  2827. #
  2828.         during checkout (see co).  This is useful for programming
  2829.         languages without multi-line comments.  During rcs -i or initial
  2830.         ci, the comment leader is guessed from the suffix of the working
  2831.         file.
  2832.  
  2833.    -l[rev]  locks the revision with number rev.  If a branch is given, the
  2834.         latest revision on that branch is locked.  If rev is omitted, the
  2835.         latest revision on the default branch is locked.  Locking
  2836.         prevents overlapping changes.  A lock is removed with ci or rcs
  2837.         -u (see below).
  2838.  
  2839.    -u[rev]  unlocks the revision with number rev.  If a branch is given, the
  2840.         latest revision on that branch is unlocked.  If rev is omitted,
  2841.         the latest lock held by the caller is removed.  Normally, only
  2842.         the locker of a revision may unlock it.  Somebody else unlocking
  2843.         a revision breaks the lock.
  2844.  
  2845.     -L  Sets locking to strict.  Strict locking means that the owner of
  2846.         an RCS file is not exempt from locking for checkin.  This option
  2847.         should be used for files that are shared.
  2848.  
  2849.     -U  Sets locking to non-strict.  Non-strict locking means that the
  2850.         owner of a file need not lock a revision for checkin.  This
  2851.         option should NOT be used for files that are shared.
  2852.  
  2853.  -nname[:rev]
  2854.         Associates the symbolic name name with the branch or revision
  2855.         rev. Rcs prints an error message if name is already associated
  2856.         with another number. If rev is omitted, the symbolic name is
  2857.         deleted.
  2858.  
  2859.  -Nname[:rev]
  2860.         Same as -n, except that it overrides a previous assignment of
  2861.         name.
  2862.  
  2863.    -orange  Deletes ("outdates") the revisions given by range.  A range
  2864.         consisting of a single revision number means that revision.  A
  2865.         range consisting of a branch number means the latest revision on
  2866.         that branch. A range of the form rev1-rev2 means revisions rev1
  2867.         to rev2 on the same branch, -rev  means from the beginning of the
  2868.         branch containing rev up to and including rev, and rev means from
  2869.         revision rev to the end of the branch containing rev.  None of
  2870.         the outdated revisions may have branches or locks.
  2871.  
  2872.     -q  Quiet mode; diagnostics are not printed.
  2873.  
  2874.  -sstate[:rev]
  2875.         sets the state attribute of the revision rev to state.  If rev is
  2876.         a branch number, the latest revision on that branch is assumed.
  2877.         If rev is omitted, the latest revision on the default branch is
  2878.         assumed.  Any identifier is acceptable for state.  A useful set
  2879.         of states is Exp (for experimental), Stab (for stable), and Rel
  2880.         (for released).  By default, ci sets the state of a revision to
  2881.         Exp.
  2882.  
  2883.  -t[txtfile]
  2884.         writes descriptive text into the RCS file (deletes the existing
  2885.         text).  If txtfile is omitted, rcs prompts the user for text
  2886.         supplied from the standard input, terminated with a line
  2887.         containing a single . or CTRL-\.  Otherwise, the descriptive text
  2888.         is copied from the file txtfile.  If the -i option is present,
  2889.         descriptive text is requested even if -t is not given.  The
  2890.         prompt is suppressed if the standard input is not a terminal.
  2891.  
  2892.     DIAGNOSTICS
  2893.     The RCS file name and the revisions outdated are written to the
  2894.     diagnostic output.  The exit status always refers to the last RCS
  2895.     file operated upon, and is 0 if the operation was successful, 1
  2896.     otherwise.
  2897.  
  2898.     FILES
  2899.     rcs creates a semaphore file in the same directory as the RCS file to
  2900.     prevent simultaneous update.  For changes, rcs always creates a new
  2901.     file.  On successful completion, rcs deletes the old one and renames
  2902.     the new one.
  2903.  
  2904.     SEE ALSO
  2905.     co, ci, ident, rcsdiff, rcsintro, rcsmerge, rlog
  2906.  
  2907. dice/rcsclean                                                  dice/rcsclean
  2908.  
  2909.     FUNCTION
  2910.     Clean up RCS Work Files
  2911.  
  2912.     SYNOPSIS
  2913.     rcsclean [ -rrev ] [ -qrev ] file...
  2914.  
  2915.     DESCRIPTION
  2916.     Rcsclean removes working files that were checked out and never
  2917.     modified.  For each file given, rcsclean compares the working file
  2918.     and a revision in the corresponding RCS file.  If it finds no
  2919.     difference, it removes the working file, and, if the revision was
  2920.     locked by the caller, unlocks the revision.
  2921.  
  2922.     A file name ending in ',v' is an RCS file name, otherwise a working
  2923.     file name.  Rcsclean derives the working file name from the RCS file
  2924.     name and vice versa, as explained in co.  Pairs consisting of both an
  2925.     RCS and a working file name may also be specified.
  2926.  
  2927.     -r Rev  specifies with which revision the working file is compared.  If
  2928.         rev is omitted, rcsclean compares the working file with the
  2929.         latest revision on the default branch (normally the highest
  2930.         branch on the trunk).
  2931.  
  2932.     -q  suppresses diagnostics.
  2933.  
  2934.         Rcsclean is useful for "clean" targets in Makefiles.  Note that
  2935.         rcsdiff prints out the differences.  Also, ci normally asks
  2936.         whether to check in a file if it was not changed.
  2937.  
  2938.     EXAMPLES
  2939.     rcsclean *.c *.h
  2940.  
  2941.     The above command removes all working files ending in ".c" or ".h"
  2942.     that were not changed since their checkout.
  2943.  
  2944.     DIAGNOSTICS
  2945.     The exit status is 0 if there were no differences during the last
  2946.     comparison or if the last working file did not exist, 1 if there were
  2947.     differences, and 2 if there were errors.
  2948.  
  2949.     SEE ALSO
  2950.     co, ci, ident, rcs, rcsdiff, rcsintro, rcsmerge, rlog
  2951.  
  2952. dice/rcsdiff                                                    dice/rcsdiff
  2953.  
  2954.     FUNCTION
  2955.     Compare RCS Revisions
  2956.  
  2957.     SYNOPSIS
  2958.     rcsdiff [ -biwt ] [ -cefhn ] [ -q ] [ -rrev1 ] [ -rrev2 ] file ...
  2959.  
  2960.     DESCRIPTION
  2961.     Rcsdiff runs diff to compare two revisions of each RCS file given.  A
  2962.     file name ending in ',v' is an RCS file name, otherwise a working
  2963.     file name.  Rcsdiff derives the working file name from the RCS file
  2964.     name and vice versa, as explained in co.  Pairs consisting of both an
  2965.     RCS and a working file name may also be specified.
  2966.  
  2967.     The options -b, -i, -w, -t, -c, -e, -f, and -h, have the same effect
  2968.     as described in diff.
  2969.  
  2970.     -n  generates an edit script of the format used by RCS
  2971.  
  2972.     -q  Suppresses diagnostic output.
  2973.  
  2974.         If both rev1 and rev2 are omitted, rcsdiff compares the latest
  2975.         revision on the default branch (normally the highest branch on
  2976.         the trunk) with the contents of the corresponding working file.
  2977.         This is useful for determining what you changed since the last
  2978.         checkin.
  2979.  
  2980.         If rev1 is given, but rev2 is omitted, rcsdiff compares revision
  2981.         rev1 of the RCS file with the contents of the corresponding
  2982.         working file.
  2983.  
  2984.         If both rev1 and rev2 are given, rcsdiff compares revisions rev1
  2985.         and rev2 of the RCS file.
  2986.  
  2987.         Both rev1 and rev2 may be given numerically or symbolically, and
  2988.         may actually be attached to any of the options.
  2989.  
  2990.     EXAMPLES
  2991.     rcsdiff f.c
  2992.  
  2993.     The above command runs diff, comparing the currently checked out
  2994.     version with the latest revision stored on the current trunk.
  2995.  
  2996.     DIAGNOSTICS
  2997.     The exit status is 0 if there were no differences during the last
  2998.     comparison, 1 if there were differences, and 2 if there were errors.
  2999.  
  3000.     SEE ALSO
  3001.     ci, co, diff, ident, rcs, rcsintro, rcsmerge, rlog
  3002.  
  3003. dice/rcsmerge                                                  dice/rcsmerge
  3004.  
  3005.     FUNCTION
  3006.     Merge RCS Revisions
  3007.  
  3008.     SYNOPSIS
  3009.     rcsmerge -rrev1 [ -rrev2 ] [ -p ] file
  3010.  
  3011.     DESCRIPTION
  3012.     Rcsmerge incorporates the changes between rev1 and rev2 of an RCS
  3013.     file into the corresponding working file.  If -p is given, the result
  3014.     is printed on the standard output, otherwise the result overwrites
  3015.     the working file.
  3016.  
  3017.     A file name ending in ',v' is an RCS file name, otherwise a working
  3018.     file name.  Rcsmerge derives the working file name from the RCS file
  3019.     name and vice versa, as explained in co.  A pair consisting of both
  3020.     an RCS and a working file name may also be specified.
  3021.  
  3022.     Rev1 may not be omitted.  If rev2 is omitted, the latest revision on
  3023.     the default branch (normally the highest branch on the trunk) is
  3024.     assumed.  Both rev1 and rev2 may be given numerically or
  3025.     symbolically.
  3026.  
  3027.     Rcsmerge prints a warning if there are overlaps, and delimits the
  3028.     overlapping regions as explained in co -j.  The command is useful for
  3029.     incorporating changes into a checked-out revision.
  3030.  
  3031.     EXAMPLES
  3032.     Suppose you have released revision 2.8 of f.c.    Assume furthermore
  3033.     that you just completed revision 3.4, when you receive updates to
  3034.     release 2.8 from someone else.    To combine the updates to 2.8 and
  3035.     your changes between 2.8 and 3.4, put the updates to 2.8 into file
  3036.     f.c and execute
  3037.  
  3038.     rcsmerge -p -r2.8 -r3.4 f.c >f.merged.c
  3039.  
  3040.     Then examine f.merged.c.  Alternatively, if you want to save the
  3041.     updates to 2.8 in the RCS file, check them in as revision 2.8.1.1 and
  3042.     execute co -j:
  3043.  
  3044.     ci -r2.8.1.1 f.c
  3045.     co -r3.4 -j2.8:2.8.1.1 f.c
  3046.  
  3047.     As another example, the following command undoes the changes between
  3048.     revision 2.4 and 2.8 in your currently checked out revision in f.c.
  3049.  
  3050.     rcsmerge -r2.8 -r2.4 f.c
  3051.  
  3052.     Note the order of the arguments, and that f.c will be overwritten.
  3053.  
  3054.     SEE ALSO
  3055.     ci, co, merge, ident, rcs, rcsdiff, rlog
  3056.  
  3057.     BUGS
  3058.     Rcsmerge does not work on files that contain lines with a single ..
  3059.  
  3060. dice/rlog                                                          dice/rlog
  3061.  
  3062.     FUNCTION
  3063.     Display RCS History
  3064.  
  3065.     SYNOPSIS
  3066.     rlog [ options ] file ...
  3067.  
  3068.     DESCRIPTION
  3069.     Rlog prints information about RCS files.  Files ending in ,v are RCS
  3070.     files, all others are working files.  If a working file is given,
  3071.     rlog will locate the corresponding RCS file.
  3072.  
  3073.     Rlog prints the following information for each RCS file: RCS file
  3074.     name, working file name, head (i.e., the number of the latest
  3075.     revision on the trunk), default branch, access list, locks, symbolic
  3076.     names, suffix, total number of revisions, number of revisions
  3077.     selected for printing, and descriptive text.  This is followed by
  3078.     entries for the selected revisions in reverse chronological order for
  3079.     each branch.  For each revision, rlog prints revision number, author,
  3080.     date/time, state, number of lines added/deleted (with respect to the
  3081.     previous revision), locker of the revision (if any), and log message.
  3082.     Without options, rlog prints complete information.  The options below
  3083.     restrict this output.
  3084.  
  3085.     -L  ignores RCS files that have no locks set; convenient in
  3086.         combination with -R, -h, or -l.
  3087.  
  3088.     -R  only prints the name of the RCS file; convenient for translating
  3089.         a working file name into an RCS file name.
  3090.  
  3091.     -h  prints only RCS file name, working file name, head, default
  3092.         branch, access list, locks, symbolic names, and suffix.
  3093.  
  3094.     -t  prints the same as -h, plus the descriptive text.
  3095.  
  3096.     -b  prints information about the revisions on the default branch
  3097.         (normally the highest branch on the trunk).
  3098.  
  3099.    -ddates  prints information about revisions with a checkin date/time in
  3100.         the ranges given by the semicolon- separated list of dates.  A
  3101.         range of the form d1<d2 or d2>d1 selects the revisions that were
  3102.         deposited between d1 and d2, (inclusive).  A range of the form <d
  3103.         or d> selects all revisions dated d or earlier.  A range of the
  3104.         form d< or >d selects all revisions dated d or later.  A range of
  3105.         the form d selects the single, latest revision dated d or
  3106.         earlier.  The date/time strings d, d1, and d2 are in the free
  3107.         format explained in co.  Quoting is sometimes necessary,
  3108.         especially for < and >.  Note that the separator is a semicolon.
  3109.  
  3110.  -l[lockers]
  3111.         prints information about locked revisions.    If the
  3112.         comma-separated list lockers of login names is given, only the
  3113.         revisions locked by the given login names are printed.  If the
  3114.         list is omitted, all locked revisions are printed.
  3115.  
  3116.  -rrevisions
  3117.         prints information about revisions given in the comma-separated
  3118.         list revisions of revisions and ranges.  A range rev1-rev2 means
  3119.         revisions rev1 to rev2 on the same branch, -rev means revisions
  3120.         from the beginning of the branch up to and including rev, and
  3121.         rev- means revisions starting with rev to the end of the branch
  3122.         containing rev.  An argument that is a branch means all revisions
  3123.         on that branch.  A range of branches means all revisions on the
  3124.         branches in that range.
  3125.  
  3126.   -sstates  prints information about revisions whose state attributes match
  3127.         one of the states given in the comma-separated list states.
  3128.  
  3129.  -w[logins]
  3130.         prints information about revisions checked in by users with login
  3131.         names appearing in the comma- separated list logins.  If logins
  3132.         is omitted, the user's login is assumed.
  3133.  
  3134.         Rlog prints the intersection of the revisions selected with the
  3135.         options -d, -l, -s, -w, intersected with the union of the
  3136.         revisions selected by -b and -r.
  3137.  
  3138.     EXAMPLES
  3139.     rlog -L -R RCS/*,v
  3140.     rlog -L -h RCS/*,v
  3141.     rlog -L -l RCS/*,v
  3142.     rlog RCS/*,v
  3143.  
  3144.     The first command prints the names of all RCS files in the
  3145.     subdirectory RCS which have locks.  The second command prints the
  3146.     headers of those files, and the third prints the headers plus the log
  3147.     messages of the locked revisions.  The last command prints complete
  3148.     information.
  3149.  
  3150.     DIAGNOSTICS
  3151.     The exit status always refers to the last RCS file operated upon, and
  3152.     is 0 if the operation was successful, 1 otherwise.
  3153.  
  3154.     SEE ALSO
  3155.     ci, co, ident, rcs, rcsdiff, rcsintro, rcsmerge, section 10.2
  3156.  
  3157. dice/romable                                                    dice/romable
  3158.  
  3159.     FUNCTION
  3160.     Generate Romable Image
  3161.  
  3162.     SYNOPSIS
  3163.     Romable exeFile -o outFile [-o out2] -C addr -D addr  -pi
  3164.  
  3165.     DESCRIPTION
  3166.     Romable takes an executable compiled by DICE, and generates a binary
  3167.     image.    This is normally used to generate a file for programming into
  3168.     ROM.
  3169.  
  3170.    exeFile  input executable linked with dlink
  3171.  
  3172.  -o outFile
  3173.         output binary (unformatted -- raw).  If TWO -o options are
  3174.         specified the two output files will have even bytes and odd bytes
  3175.         respectively, which is what you need when you must program two
  3176.         eproms (one on the LSB data lines and one on the MSB data lines).
  3177.  
  3178.    -C addr  code start address, 0octal, decimal, or 0xHEX
  3179.  
  3180.    -D addr  data start address, 0octal, decimal, or 0xHEX
  3181.  
  3182.        -DC  place actual data+bss just after code (i.e.  the result is
  3183.         intended to be downloaded into RAM, there is no duplicate data in
  3184.         this case). '-D addr' is not specified in this case
  3185.  
  3186.        -pi  generate a position independent module.  Neither -C or -D are
  3187.         specified in this case, and Romable will warn you have any
  3188.         absolute references.
  3189.  
  3190.         Note that your custom startup code determines how much of
  3191.         __autoinit and __autoexit is to be supported.  Note especially
  3192.         that __autoinit0 MUST BE SUPPORTED because DICE will generate
  3193.         __autoinit0 sections to handle 32 bit data relocations run-time.
  3194.  
  3195.         Romable generates a raw output file or files with the EPROM code
  3196.         first, and initialized data after the main code (still in EPROM)
  3197.         which, as has already been described, will be copied to RAM on
  3198.         reset by your startup routine.
  3199.  
  3200.         This startup-copying of initialized data and clearing of BSS
  3201.         makes it extremely easy to use DICE to generate ROMED
  3202.         applications without having to deal with major porting
  3203.         considerations.
  3204.  
  3205. dice/touch                                                        dice/touch
  3206.  
  3207.     FUNCTION
  3208.     Update File Datestamp
  3209.  
  3210.     SYNOPSIS
  3211.     touch file
  3212.  
  3213.     DESCRIPTION
  3214.     Touch bumps the date of a file without changing the contents.  This
  3215.     is useful to force utilities like VMake and DMake to recompile source
  3216.     files.
  3217.  
  3218. dice/ttxsame                                                    dice/ttxsame
  3219.  
  3220.     FUNCTION
  3221.     Helper Program for Integrated Error Scripts
  3222.  
  3223.     DESCRIPTION
  3224.     ttxsame is a helper program used by the integrated error scripts to
  3225.     start the TurboText editor.
  3226.  
  3227. dice/VMake                                                        dice/VMake
  3228.  
  3229.     FUNCTION
  3230.     Visual Interface to DICE
  3231.  
  3232.     DESCRIPTION
  3233.     VMake is a complete control center for DICE.  From within VMake you
  3234.     can manage a project, check files in or out of RCS, select files to
  3235.     edit, and finally compile and run your program.  VMake is an
  3236.     alternate to the CLI-based dcc program.  VMake is very flexible, and
  3237.     can be configured to control programs other than DICE.    See chapter
  3238.     five for a full description.
  3239.  
  3240. dice/VOpts                                                        dice/VOpts
  3241.  
  3242.     FUNCTION
  3243.     Visual Interface for Setting Options
  3244.  
  3245.     DESCRIPTION
  3246.     VOpts provides an easy and powerful visual interface for selecting
  3247.     compiler options.  Options may be specified explicitly, or simply
  3248.     left to defaults.  VOpts is very flexible, can can be configured to
  3249.     set options for any program, not just DICE.  See chapter five for all
  3250.     the details.
  3251.  
  3252. dice/wbrun                                                        dice/wbrun
  3253.  
  3254.     FUNCTION
  3255.     Simulate Starting a Program From Workbench
  3256.  
  3257.     SYNOPSIS
  3258.     wbrun file
  3259.  
  3260.     DESCRIPTION
  3261.     Wbrun is used by VMake to simulate the method used by the Amiga
  3262.     Workbench to start programs.
  3263.  
  3264. dice/wc                                                              dice/wc
  3265.  
  3266.     FUNCTION
  3267.     Count Elements in a File
  3268.  
  3269.     SYNOPSIS
  3270.     wc file ...
  3271.  
  3272.     DESCRIPTION
  3273.     wc counts the number of characters, words, and lines in each
  3274.     specified file and prints a total at the end.
  3275.